首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 存取修飾符與繼承關係完整解析

     編輯:Java 相關知識

四大存取修飾符速查表

修飾符同一類別同一套件不同套件子類別不同套件非子類別可被繼承
public✔✔✔✔✔
protected✔✔✔✘✔
default (package-private)✔✔✘✘僅同套件子類別
private✔✘✘✘✘

實例情境推演

假設 package first 中的 FirstClass 定義四個欄位:

public int aa;
private int xiaoaa;
protected int cc;
int xiaocc; // default

情境一:同套件繼承

SecondClass extends FirstClass(同在 first 套件)

可繼承:aa、cc、xiaocc(private xiaoaa 不可見)

情境二:跨套件繼承

ThirdClass extends FirstClass(位於 package second)

可繼承:aa、cc(default xiaocc 跨套件不可見,private 同樣不可見)

核心規則總結

  1. public:無限制,任何子類別皆可繼承。
  2. protected:雖阻擋「跨套件非子類別」存取,但「跨套件子類別」仍可繼承——這是設計給繼承體系用的關鍵字。
  3. default:雙重限制,僅同套件可見,繼承亦同。
  4. private:嚴格封裝於宣告類別內部,子類別完全不可見、不可繼承。

實務建議

  • 欄位預設 private,透過 public/protected getter/setter 控制存取,符合資訊隱藏原則。
  • 設計給子類別擴充的內部方法或常數,標記 protected。
  • 避免使用 default 作為 API 邊界,易造成跨模組維護困擾。

補充:建構子與修飾符

建構子不可繼承,但子類別建構子會隱式或顯式呼叫父類別建構子。父類別若無 public/protected 建構子,子類別將無法實例化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved