(1)對(duì)于public修飾符傲绣,它具有最大的訪問(wèn)權(quán)限,可以訪問(wèn)任何一個(gè)在CLASSPATH下的類巩踏、接口秃诵、異常等。它往往用于對(duì)外的情況塞琼,也就是對(duì)象或類對(duì)外的一種接口的形式菠净。
(2)對(duì)于protected修飾符,它主要的作用就是用來(lái)保護(hù)子類的彪杉。它的含義在于子類可以用它修飾的成員毅往,其他的不可以,它相當(dāng)于傳遞給子類的一種繼承的東西派近。
(3)對(duì)于default來(lái)說(shuō)攀唯,有點(diǎn)的時(shí)候也成為friendly(友員),它是針對(duì)本包訪問(wèn)而設(shè)計(jì)的渴丸,任何處于本包下的類侯嘀、接口、異常等谱轨,都可以相互訪問(wèn)戒幔,即使是父類沒(méi)有用protected修飾的成員也可以。
(4)對(duì)于private來(lái)說(shuō)土童,它的訪問(wèn)權(quán)限僅限于類的內(nèi)部诗茎,是一種封裝的體現(xiàn),例如娜扇,大多數(shù)的成員變量都是修飾符為private的错沃,它們不希望被其他任何外部的類訪問(wèn)。
下表為Java訪問(wèn)控制符的含義和使用情況
注意:Java的訪問(wèn)控制是停留在編譯層的雀瓢,也就是它不會(huì)在.class文件中留下任何的痕跡枢析,只在編譯的時(shí)候進(jìn)行訪問(wèn)控制的檢查。其實(shí)刃麸,通過(guò)反射的手段醒叁,是可以訪問(wèn)任何包下任何類中的成員,例如泊业,訪問(wèn)類的私有成員也是可能的把沼。
區(qū)別:
(1)public:可以被所有其他類所訪問(wèn)。
(2)private:只能被自己訪問(wèn)和修改吁伺。
(3)protected:自身饮睬,子類及同一個(gè)包中類可以訪問(wèn)。
- (4)default(默認(rèn)):同一包中的類可以訪問(wèn)篮奄,聲明時(shí)沒(méi)有加修飾符捆愁,認(rèn)為是friendly割去。
實(shí)例
- private,protected昼丑,public呻逆,default。同一個(gè)包下的測(cè)試
package testP.test;
public class Person {
private String name;
protected String age;
protected String sex;
String how;
private String getName() {
return name;
}
private void setName(String name) {
this.name = name;
}
public void get() {
this.name = getName();
}
}
同一個(gè)包下
-
繼承Person除了private 屬性菩帝,都可以訪問(wèn)
-
直接實(shí)例化除了private 屬性咖城,都可以訪問(wèn)
不同的包
- 繼承Person類的情況,protected,public可以訪問(wèn),而private和默認(rèn)(default)屬性的方法和字段不可訪問(wèn)
- 直接實(shí)例化呼奢,只能調(diào)用public下的get方法宜雀,其他protected,private,default的屬性字段都不可以訪問(wèn)