Java中存取權限和修飾符public、private、protected和default的區別和聯繫

java中有4種存取權限和對應的修飾符(從限制最少的開始列出),主要做用以下:java

1.public
權限最大,表明任何程序代碼均可以存取的公開事物(類、變量、方法、構造函數等)。它每每用於對外的狀況,也就是對象或類對外的一種接口的形式。看一下例子:數據庫

package com.ab.test;函數

public class Public {
public int a = 20;
public void hello(){
System.out.println("Hello World!");
}設計

}
咱們先在一個包中定義一個public的類、變量、方法,而後咱們再定義一個在不一樣包中來引用這個類、變量、方法:
package com.ab.main;excel

import com.ab.test.*;對象

public class Main {blog

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a;
Public pub = new Public();
a = pub.a;
System.out.println("Main a is: " + a);
pub.hello();
}繼承

}接口

咱們能夠經過import com.ab.test.*;的方式就能夠很方便無限制的調用類Public了,這種方式也是咱們平時使用的比較多的形式,咱們能夠把通用的類放到一個包中,好比像處理數據庫,
發送郵件或者存取excel等基礎通用的需求,而後後續在不少地方反覆調用,這也是代碼重用,可以極大提升效率。
2.protected圖片

受保護的部分運行起來像是default,但也能容許不在相同包中的子類繼承受保護的部分,主要做用是保護子類的。

3.default

只有在同一包中的默認事物可以存取,也稱爲friendly,它是針對本包訪問而設計的,聲明時沒有加修飾符,認爲是friendly

4.private

只有同一類中的程序代碼才能存取,訪問權限限於類的內部,是一種封裝的體現。須要注意的是它是對類而不是對象設限,因此Dog能夠看到別的Dog的私有部分,但Cat就不能看到Dog的私有部分。
借用一個網上搜到的圖片,總結權限以下:

須要注意的點:

1.在java裏,這些修飾符均可以修飾類中的成員變量和方法,可是隻有public和友好型能夠修飾類,也就是說只能有public和default的類,而不能有private和protected的類;

2.java的訪問控制是停留在編譯層的,也就是它不會在.class文件中留下任何的痕跡,只在編譯的時候進行訪問控制的檢查。其實,經過反射的手段,是能夠訪問任何包下任何類中的成員,例如,訪問類的私有成員也是可能的。

相關文章
相關標籤/搜索