合抱之木,生於毫末;百丈之臺,起於壘土;千里之行,始於足下。《老子》
目錄
大綱
白話總結:
訪問修飾符一分爲二的看。一類: private 除了當前類,其它都不行,public所有的都可以。二類:default的只有包內可以,protected 與defalut基本類似,但是protected 有一種繼承的情況。圖三(只討論特殊) 圖四(流程大體吧整個過程串了一遍) 表1(**橫向和縱向的進行比較感覺不錯)
訪問修飾符 :
private :類的修飾符。 ——出了當前類就訪問不到
default(不寫):包的修飾符 。 ——出了包就訪問不到
protected :大部分的權限和default一樣。特殊情況是具有父子類關係的時候。
public :所有的都可以訪問,這種和private是兩個極端的情況可以忽略不計。
非訪問修飾符
static 物理位置(自己理解的)(類 接口 抽象類)都不可以修飾 身份位置(自己理解的)(內部類 相當於屬性)(屬於屬性 方法 層面)
final 抽象類 接口不可以修飾(抽象類 和接口就是爲了更好的拓展)如果可以修飾就相互矛盾。(屬於類 方法 屬性 層面)
abstract 不能修飾 屬性 其它都可以(屬於類 方法 層面的)
synchronized (屬於方法層面的)
volatile (屬於屬性層面的)
結合表1 和表2
類 抽象類 內部類 接口 放在一類
內部類 屬性 方法 放在一類
defalut:
相同包
public class Animal {
String age;
String name;
}
public class TestAnimal {
public static void main(String[] args) {
Animal animal = new Animal();
String age = animal.age;
String name = animal.name;
}
}
不同包
public class Animal {
String age;
String name;
}
protected
不同包
public class Animal {
protected String age;
protected String name;
}
public class Animal {
protected String age;
protected String name;
}
不同包具有繼承關係的子類可以訪問父類的屬性和方法 這是子類繼承的
相同包
public class Animal {
protected String age;
protected String name;
}
public class TestAnimal {
public static void main(String[] args) {
Animal animal = new Animal();
String age = animal.age;
String name = animal.name;
}
}
參考資料:
https://www.runoob.com/w3cnote/java-protected-keyword-detailed-explanation.html