每日一題:Java 訪問修飾符詳解
訪問修飾符定義了類、屬性和方法的訪問許可權,Java 中包含四種,訪問許可權從小到大為 private、default、protected 和 public。
- public,公共修飾符,被其修飾的類、屬性或方法在專案中任意類中訪問。
- protected,保護修飾符,被其修飾的類、屬性或方法在當前類所屬包或當前類的子類中可訪問。
- default,預設修飾符,沒有明確宣告修飾符時預設採用此修飾符,被其修飾的類、屬性或方法只能被當前類所屬包中的類訪問。
- private,私有修飾符,被其修飾的類、屬性或方法僅在當前類中可訪問。
修飾符 | 本類中 | 同一個包下 | 不同包子類 | 不同包非子類 |
---|---|---|---|---|
private | √ | × | × | × |
default | √ | √ | × | × |
protected | √ | √ | √(部分) | × |
public | √ | √ | √ | √ |
以下是訪問修飾符相關知識中需要特別注意的內容:
- default 修飾的類、屬性或方法如果是在不同包下,即使是子類也無法訪問。
- protected 修飾的類、屬性或方法可以在不同包子類中訪問,但是無法通過該子類的例項進行訪問。例如 A 是 B 的父類,兩者分屬不同包下,A 中的方法 a() 使用 protected 進行修飾,此時我們可以在 B 的方法 b() 中呼叫 super.a(),但是無法通過例項化進行呼叫, new B().a() 則無法呼叫。