Java 中子類重寫(Override)父類方法後,若需在子類中調用父類原本的實現,可使用 super 關鍵字。本文說明用法與注意事項。
super.父類方法名(參數列表);
class Father {
public void show() {
System.out.println("父類方法");
}
}
class Son extends Father {
@Override
public void show() {
System.out.println("子類方法開始");
super.show(); // 調用父類同名方法
System.out.println("子類方法結束");
}
}
public class Test {
public static void main(String[] args) {
new Son().show();
}
}
輸出:
子類方法開始
父類方法
子類方法結束
| 關鍵字 | 含義 | 使用場景 |
|---|---|---|
super.method() | 調用父類方法 | 子類重寫後需保留父類邏輯 |
super.field | 訪問父類字段 | 子類有同名字段時區分訪問 |
super() | 調用父類構造器 | 子類構造器首行隱式/顯式調用 |
this.method() | 調用當前類方法 | 區分重載方法或鏈式調用 |
super 只能在非靜態上下文中使用(實例方法、構造器)super(...) 必須是第一條語句private)不可被繼承,自然無法通過 super 調用super 調用@Override
public void save() {
// 子類擴展邏輯:記錄日誌
log.info("保存前檢查...");
// 調用父類核心保存邏輯
super.save();
// 子類擴展邏輯:發送通知
notificationService.send("保存成功");
}
這種「模板方法」模式極其常見:子類在父類算法骨架前後插入擴展邏輯,通過 super 復用核心實現。