訪問權(quán)限修飾詞(access specifier),控制其他的類訪問本類成員的級(jí)別,先看下面的例子:
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();
?}
}

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

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

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