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

Java 繼承機制深度解析:extends、覆寫、多重繼承、super 調用父類構造器

     編輯:Java 綜合教學

Java 繼承機制深度解析:extends、覆寫、多重繼承、super 調用父類構造器

繼承本質:受控的「抄襲」與「借鑒」

class Son extends Father 讓子類擁有父類非 private 成員。但單純繼承無意義,核心價值在於 覆寫:子類重新定義父類方法,實現「同一行為、不同實現」。

覆寫規則

  • 方法簽名完全一致 (名稱、參數列表、返回類型兼容)
  • 權限修飾符 不能縮小 (public → protected ❌)
  • 拋出異常 不能擴大 (只能拋出父類異常或其子類)
  • @Override 註解編譯期驗證,防止誤寫成重載
class Father { void copy() { System.out.println("Father copy"); } }
class Son extends Father {
    @Override
    void copy() { System.out.println("Son copy - 借鑒後修改"); }
}

繼承關係 父類成員 子類繼承效果 覆寫效果 參數不匹配非覆寫

繼承類型限制

類型支援說明
單一繼承✓一個類只能 extends 一個父類
多重繼承✓A→B→C 鏈式繼承
多重繼承 (菱形)✗Java 不支援類多重繼承,介面可多實現

不支援多重繼承 多重繼承鏈

繼承的工程價值:開閉原則 (OCP) 實踐

需求變更時,不修改原類,建立子類覆寫/擴展:

// 原類保持穩定
class OriginalService { void process() { ... } }

// 新需求擴展
class EnhancedService extends OriginalService {
    @Override void process() { 
        super.process(); // 可選:保留原邏輯
        // 新增邏輯
    }
    void newFeature() { ... }
}

OCP 實踐示意

super 關鍵字兩大用法

  1. super() / super(args):在子類構造器第一行顯式調用父類構造器
    • 若父類無無參構造器,子類必須顯式 super(...)
    • 隱式 super() 僅在父類有無參構造器時生效
  2. super.method() / super.field:在子類方法中調用父類版本 (被覆寫前的實現)

隱式 super() 顯式 super() 父類無無參構造器報錯 解決方案1:加無參構造器 解決方案2:顯式super(args) super 參數匹配機制 super 調用父類方法

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