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

Java 面向對象核心:繼承機制深度解析與實戰應用

     編輯:Java 綜合教學

繼承:復用與擴展的基石

繼承是面向對象最顯著特征,從現有類派生新類,子類吸收父類屬性行為並擴展新能力。技術本質: 以現有類定義為基礎建立新類,新類可增數據/功能、用父類功能,但不能選擇性繼承。

經典比喻:車體系

  • 父類 Car:車體、顏色、方向盤、輪胎
  • 子類 Sedan:添加小後備箱
  • 子類 Truck:添加大貨箱

UML 中實線空心三角箭頭指向父類。父類 = 一般化,子類 = 特化/具體化。

Java 繼承規則

  • 單繼承:一個類只能有一個直接父類 (extends),結構清晰易維護。
  • 多層繼承:A → B → C,C 擁有 A/B 所有非私有成員。
  • 接口多實現:implements 多個接口,彌補單繼承局限。

繼承五大特征

  1. 傳遞性:多層繼承自動獲得祖先類成員。
  2. 認知簡化:清晰體現層次結構。
  3. 代碼復用:子類只描述差異,減少冗余。
  4. 接口統一:增強一致性,降低模塊耦合。
  5. 多重繼承間接支持:通過接口實現。

代碼實戰演示

// 父類 A
class A {
    int num = 0;
    public A(int i) {
        System.out.println("aaaaaaaaaaaaaaaaaaa");
        System.out.println("i = " + i);
        num = i;
    }
}

// 子類 B 繼承 A
class B extends A {
    int num = 0; // 遮蔽父類同名字段
    public B() {
        super(10); // 必須首行調用父構造器
        System.out.println("bbbbbbbbbbbbbbbbbbbb");
        System.out.println("num = " + num);           // 子類 num (0)
        System.out.println("super.num = " + super.num); // 父類 num (10)
    }
}

// 測試類
public class C {
    public static void main(String[] args) {
        new B();
    }
}

輸出:

aaaaaaaaaaaaaaaaaaa
i = 10
bbbbbbbbbbbbbbbbbbbb
num = 0
super.num = 10

關鍵技術點

  • super(...) 必須在構造器首行顯式調用父構造器。
  • 同名字段:子類遮蔽父類,用 super.字段 訪問父類。
  • 私有成員 (private) 不被繼承,但子類對象內存中仍包含,可通過父類公共方法間接訪問。
  • 構造器不繼承,但子類實例化必須觸發父類構造器鏈。

設計哲思

「繼承之美如宇宙萬物關聯」。良好繼承設計關鍵在於抽象、分類、設計:將共性上移父類,差異下放子類。狗與窗口同繼承 Window 看似荒謬,實則體現「可視化組件」共性抽象。優秀設計 = 可復用代碼管理相關子對象。

繼承非銀彈,濫用導致脆弱基類問題。實戰中遵循「里氏替換原則」:子類必須能替換父類不破壞業務語義。組合優於繼承,靈活構建更勝僵硬層次。

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