java修飾符終極總結

合抱之木,生於毫末;百丈之臺,起於壘土;千里之行,始於足下。《老子》

目錄

大綱

白話總結:

訪問修飾符 :

非訪問修飾符

defalut:

相同包

不同包

protected 

不同包

相同包


大綱

     

 

白話總結:

訪問修飾符一分爲二的看。一類private 除了當前類,其它都不行public所有的都可以二類default的只有包內可以,protected 與defalut基本類似,但是protected 有一種繼承的情況。圖三(只討論特殊) 圖四(流程大體吧整個過程串了一遍) 表1(**橫向和縱向的進行比較感覺不錯)  

訪問修飾符 :

     private :類的修飾符。  ——出了當前類就訪問不到

     default(不寫):包的修飾符 。 ——出了包就訪問不到

     protected :大部分的權限和default一樣。特殊情況是具有父子類關係的時候。

     public :所有的都可以訪問,這種和private是兩個極端的情況可以忽略不計。

圖三
 


表1

非訪問修飾符

表2

static  物理位置(自己理解的)(類 接口 抽象類)都不可以修飾  身份位置(自己理解的)(內部類 相當於屬性)(屬於屬性 方法 層面)

final  抽象類 接口不可以修飾(抽象類 和接口就是爲了更好的拓展)如果可以修飾就相互矛盾。(屬於類 方法  屬性 層面)

abstract 不能修飾 屬性 其它都可以(屬於類 方法 層面的)

synchronized (屬於方法層面的)

volatile (屬於屬性層面的)

結合表1 和表2 

類 抽象類 內部類 接口  放在一類 

內部類  屬性  方法  放在一類 

表3

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章