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

Java 基礎入門筆記(11):繼承機制、super/this、方法覆蓋與構造器鏈

     編輯:Java 綜合教學

Java 基礎入門筆記(11):繼承機制、super/this、方法覆蓋與構造器鏈

1. 面向對象特徵二:繼承

定義

一個物件直接使用另一物件的屬性與方法。

好處

  • 提高代碼復用性
  • 建立類與類關係,為多態奠基

Java 繼承規則

  • 單繼承:一個子類僅能有一個直接父類
  • 不支援多重繼承(C++ 式),改以「多實現」(介面)替代,避免同名成員調用不確定性
  • 支援多層繼承(C 繼承 B,B 繼承 A)

何時定義繼承

類之間存在「is-a」所屬關係時(xxx 是 yyy 的一種 → xxx extends yyy)。

2. this 與 super

  • this:本類物件引用,區分同名成員變量與區域變量
  • super:父類空間引用,區分子父類同名成員
  • 用法相似,super 專用於訪問父類成員

3. 方法覆蓋

兩大特性對比

特性重載覆蓋
位置同一類內子類中
關鍵字overloadoverride

覆蓋注意事項

  1. 子類方法權限 ≥ 父類權限(父類 private 不構成覆蓋)
  2. static 僅能覆蓋 static

適用場景

子類需保留父類功能聲明,但實現特有邏輯時。

4. 構造器鏈與 super()

  • 子類構造器第一行預設隱式 super(),調用父類無參構造器
  • 子類實例化流程:
    1. 載入類 → 2. 堆內存分配 → 3. 屬性默認初始化 → 4. 調用構造器 →
    5. 先調用父類構造器 → 6. 子類屬性顯式初始化 → 7. 子類構造器邏輯 → 8. 賦值引用
  • 父類無無參構造器時,子類必須用 super(參數) 顯式調用
  • super() 與 this() 均只能放第一行,二選一

5. 物件實例化完整流程圖解

Person p = new Person();

  1. JVM 讀取 Person.class,先載入父類
  2. 堆內存開闢空間,分配地址
  3. 屬性默認初始化
  4. 調用對應構造器
  5. 構造器首行 super() 調用父類構造器
  6. 父類初始化完成
  7. 子類屬性顯式初始化
  8. 子類構造器特定邏輯
  9. 地址賦值給引用變量

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