訪問權限修飾詞(access specifier),控制其他的類訪問本類成員的級別,先看下面的例子:
PrivateTest.java
class A{
?private int i=1;
?int s=0;
?private void print(){
??System.out.println(i);
?}
}

public class PrivateTest{
?public static void main(String[] args){
??A a=new A();
??//System.out.println(a.i);
??System.out.println(a.s);
??//a.print();
?}
}

從輸出結果可以看到,System.out.println(a.i);不能通過編譯,如果print設置為public的話a.print();可以通過編譯并且輸出正確的結果。也就是說在A類中看不到B類的private變量的,但是A引用B類的public成員函數,而這個函數用到了B中的private變量是沒有問題的。

如果,對于繼承自己的class,認為是自己的子女,而對于和自己一個目錄下的classes,認為是自己的朋友,那么
1、public:表明該數據成員、成員函數是對所有人開放的,所有人都可以直接進行調用;
2、private:表示私有,私有的意思就是除了自己之外,任何人都不可以直接使用;
3、protected:protected對于子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對于其他的外部class,protected就變成private;
4、類本身只能是public或者默認的,不能是private和protected的;
5、這里說的直接使用是指可以在其他類中使用本類的對象進行調用(成員數據和成員函數)。

作用域?????????? 當前類?????? 同一package???? 子孫類??????? 其他package
public?????????????√????????????? √????????????????√???????????? ? √
protected????????√????????????? √????????????????√??????????????×
friendly?????????? √????????????? √????????????????×???????????????× (默認為friendly,沒有這個修飾詞)
private????????????√????????????? ×????????????????×???????????????×