首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 繼承傳遞性:父類的父類也是父類,子類可存取非私有成員

     編輯:程式設計疑難解答

結論

是。若 A 是 B 父類,B 是 C 父類,則 A 也是 C 的父類(間接父類/祖先類)。

存取權限規則

修飾符同類同包子類異包子類任意類
private✅❌❌❌
default (package-private)✅✅❌❌
protected✅✅✅❌
public✅✅✅✅

繼承鏈範例

class A {              // 祖父類
    public int a = 1;
    protected int b = 2;
    int c = 3;         // package-private
    private int d = 4;
}

class B extends A {    // 父類
    void test() {
        System.out.println(a); // ✅ public
        System.out.println(b); // ✅ protected
        System.out.println(c); // ✅ 同包
        // System.out.println(d); // ❌ private 不可見
    }
}

class C extends B {    // 子類
    void test() {
        System.out.println(a); // ✅ 繼承鏈向上可見
        System.out.println(b); // ✅
        // System.out.println(c); // ❌ 若 C 在不同包,不可見
    }
}

重寫與多態

  • 子類 繼承 父類所有非 private 方法與欄位。
  • 子類可 重寫 非 final、非 static、非 private 方法,實現多態。
  • 建構子 不會被繼承,但子類建構子預設隱式呼叫 super()。

最佳實踐

  • 欄位預設 private,提供 getter/setter 封裝。
  • 需給子類存取的欄位用 protected,或提供 protected 方法。
  • 設計給繼承的類別,方法預設 protected 或 public,並加 @Override 註解確保正確重寫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved