java中public,protected,private關鍵字以及預設訪問許可權修飾符的用法細節

茶木君發表於2018-10-03

設ParentClass類當中有一個fun方法,所有繼承該類的子類稱之為SubClass。

一、public關鍵字:

使用public修飾fun。

1.同包下:

(1)同包子類下,例項化得到ParentClass物件,可以訪問public修飾的方法或屬性。

(2)同包子類下,例項化得到SubClass物件,可以訪問public修飾的方法或屬性。

ps:上圖中的 ParentClass物件也可以通過new SubClass()例項化,這被稱為繼承多型,也是可以訪問的。

(3)同包非子類下,例項化得到ParentClass物件,可以訪問public修飾的方法或屬性。

(4)同包非子類下,例項化得到SubClass物件,不能訪問public修飾的方法或屬性。

2.不同包下:

(1)不同包子類下,例項化得到ParentClass物件,可以訪問public修飾的方法或屬性。

(2)不同包子類下,例項化得到SubClass物件,可以訪問public修飾的方法或屬性。

ps:上圖中的 ParentClass物件也可以通過new SubClass()例項化,這被稱為繼承多型,也是可以訪問的。 

(3)不同包非子類下,例項化得到ParentClass物件,可以訪問public修飾的方法或屬性。

(4)不同包非子類下,例項化得到SubClass物件,不能訪問public修飾的方法或屬性。

 

二、protected關鍵字:

使用protected修飾fun。

1.同包下:

(1)同包子類下,例項化得到ParentClass物件,可以訪問protected修飾的方法或屬性。

(2)同包子類下,例項化得到SubClass物件,可以訪問protected修飾的方法或屬性。

ps:上圖中的 ParentClass物件也可以通過new SubClass()例項化,這被稱為繼承多型,也是可以訪問的。  

(3)同包非子類下, 例項化得到ParentClass物件,可以訪問protected修飾的方法或屬性。

(4)同包非子類下,例項化得到SubClass物件,不能訪問protected修飾的方法或屬性。

2.不同包下:

(1)不同包子類下,例項化得到ParentClass物件,不能訪問protected修飾的方法或屬性。

(2)不同包子類下,例項化得到SubClass物件,可以訪問protected修飾的方法或屬性。

ps:上圖中的 ParentClass物件也可以通過new SubClass()例項化,這被稱為繼承多型,也是不能訪問的。  

(3)不同包非子類下,例項化得到ParentClass物件,不能訪問protected修飾的方法或屬性。

(4)不同包非子類下,例項化得到SubClass物件,不能訪問protected修飾的方法或屬性。

三、private關鍵字:

使用private修飾的方法或屬性,只能在本類中被訪問。

四、預設訪問許可權:

不給fun加訪問許可權修飾符。

1.同包下:

(1)同包子類下,例項化得到ParentClass物件,可以訪問預設訪問許可權修飾的方法或屬性。

(2)同包子類下,例項化得到SubClass物件,可以訪問預設訪問許可權修飾的方法或屬性。

ps:上圖中的 ParentClass物件也可以通過new SubClass()例項化,這被稱為繼承多型,也是可以訪問的。

(3)同包非子類下,例項化得到ParentClass物件,可以訪問預設訪問許可權修飾的方法或屬性。

(4)同包非子類下,例項化得到SubClass物件,不能訪問預設訪問許可權修飾的方法或屬性。

2.不同包下:

(1)不同包子類下,例項化得到ParentClass物件,不能訪問預設訪問許可權修飾的方法或屬性。

(2)不同包子類下,例項化得到SubClass物件,不能訪問預設訪問許可權修飾的方法或屬性。

ps:上圖中的 ParentClass物件也可以通過new SubClass()例項化,這被稱為繼承多型,也是不能訪問的。

(3)不同包非子類下,例項化得到ParentClass物件,不能訪問預設訪問許可權修飾的方法或屬性。

(4)不同包非子類下,例項化得到SubClass物件,不能訪問預設訪問許可權修飾的方法或屬性。

相關文章