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

Java 學習 (12) - 面向對象編程 (四) 繼承與 super 關鍵字詳解

     編輯:Java 綜合教學

Java 繼承機制深度解析:從概念到 super 關鍵字實戰

繼承是面向對象三大特性之一,實現代碼復用與類層次結構構建的基石。本文系統梳理繼承核心概念、實現語法、構造器鏈機制,並重點講解 super 關鍵字的三大使用場景。

一、繼承核心概念

  • 思想:基於現有類構建新類,復用屬性與方法,並可擴展新功能。
  • 術語:子類(派生類)繼承父類(基類/超類)。Java 單繼承,所有類隱式繼承 Object。
  • 關係:is-a(繼承)、has-a(組合)、like-a(實現接口)。
  • 意義:代碼復用、體現抽象層次、父類更通用、子類更具體。

二、語法實現

public class Teacher extends Person {
    // 子類自動擁有父類非 private 成員
}

三、super 關鍵字三大用法

場景語法說明
訪問父類被隱藏的成員(變量/方法)super.field / super.method()子類定義同名成員時,用於區分調用父類版本
調用父類構造器super(args)必須置於子類構造器第一行;若省略,隱式調用父類無參構造器
調用父類被覆蓋的方法super.overriddenMethod()在子類覆蓋方法中,保留父類邏輯並擴展

四、構造器鏈機制鐵律

  1. 創建子類對象時,必先完成父類對象初始化。
  2. 子類構造器首行顯式或隱式調用父類構造器。
  3. 父類無無參構造器且子類未顯式調用帶參構造器 → 編譯報錯。

五、代碼實戰演示

案例 1:基本 super 用法

class A {
    public A() { System.out.println("A構造器"); }
    public void showB() { System.out.println("父類showB"); }
}
class B extends A {
    public B() { super(); System.out.println("B構造器"); } // 可省略 super()
    public void showB() {
        System.out.println("子類showB");
        super.showB(); // 顯式調用父類方法
    }
}
public class Demo {
    public static void main(String[] args) {
        new B().showB();
    }
}
// 輸出:
// A構造器
// B構造器
// 子類showB
// 父類showB

案例 2:多層繼承與模板方法模式雛形

class Teacher {
    private String name, school;
    public Teacher(String name, String school) { this.name=name; this.school=school; }
    public void teaching() { System.out.println("授課前準備"); }
}
class JavaTeacher extends Teacher {
    public JavaTeacher(String name, String school) { super(name, school); }
    @Override public void teaching() {
        super.teaching(); // 復用父類通用邏輯
        System.out.println("打開Eclipse");
        System.out.println("編寫Java代碼");
    }
}
class DBTeacher extends Teacher {
    public DBTeacher(String name, String school) { super(name, school); }
    @Override public void teaching() {
        super.teaching();
        System.out.println("打開Oracle");
        System.out.println("編寫PL/SQL");
    }
}
public class Test {
    public static void main(String[] args) {
        new JavaTeacher("張三", "清華").teaching();
        new DBTeacher("李四", "清華").teaching();
    }
}

輸出展示:父類通用準備 → 子類具體實現,完美體現「模板方法」思想。

六、super vs this 對比

  • this:當前對象引用,調用本類構造器(this())、訪問本類成員。
  • super:父類對象引用,調用父類構造器(super())、訪問父類被覆蓋/隱藏成員。
  • 兩者均不能在 static 方法中使用。

總結

繼承配合 super 實現了「在子類中保留父類能力、擴展子類特性」的核心目標。掌握構造器鏈調用順序、成員訪問優先級,是寫出健壯繼承體系的前提。

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