Java 通過 extends 實現單繼承,所有類隱式繼承 Object。本文系統整理繼承語法、四大權限繼承規則、方法重載/重寫鐵律、super 三大用法、抽象類設計模式,配合圖表與代碼,構建完整知識體系。
修飾符 class 子類 extends 父類 {
// 字段、方法、構造器、初始化塊、內部類...
}
public (全局可見) / 默認 (包可見);不可用 private/protected。| 父類成員修飾符 | 同包子類 | 不同包子類 | 備註 |
|---|---|---|---|
public | ✅ | ✅ | 完全公開 |
protected | ✅ | ✅ | 僅子類可見 (非同包非子類不可見) |
| 默認 (package-private) | ✅ | ❌ | 同包可見 |
private | ❌ | ❌ | 封裝內部,子類不可直接訪問 |

super() (隱式/顯式)。A → B → C,C 繼承 A 的非 private 成員。class Demo {
void print(String s) { }
void print(int i) { } // 參數類型不同 ✅
void print(String s, int i) { } // 參數個數不同 ✅
int print(String s) { return 0; } // 僅返回類型不同 ❌ 編譯錯誤
}

protected → public ✅,public → protected ❌。static 方法 不能重寫為非 static (隱藏而非重寫)。static 方法隱藏父類 (不構成重寫)。static 不能重寫為 static。private 方法 不可重寫 (子類不可見)。
| 維度 | 重載 | 重寫 |
|---|---|---|
| 發生範圍 | 同一類 | 子類 vs 父類 |
| 方法名 | 相同 | 相同 |
| 參數列表 | 必須不同 | 必須相同 |
| 返回類型 | 無關 | 相同或子類 |
| 訪問權限 | 無關 | 不能縮小 |
| 綁定時機 | 編譯期 (靜態) | 運行期 (動態) |
| 多態性 | 無 | 核心體現 |
class Child extends Parent {
String name = "Child";
void show() {
// 1. 訪問父類字段 (解決遮蔽)
System.out.println(super.name); // 輸出 Parent.name
// 2. 調用父類方法
super.parentMethod();
// 3. 調用父類構造器 (構造器首行)
public Child() {
super("arg"); // 顯式調用帶參構造器
}
}
}




private 成員。super.super.method() 非法 (只能跳一層)。abstract class 不可實例化 (不能 new)。super() 調用初始化父類狀態。public abstract class Animal {
protected String name;
public Animal(String name) { this.name = name; } // 供子類調用
public abstract void sound(); // 抽象方法
public void breathe() { System.out.println("呼吸..."); } // 普通方法
}
class Dog extends Animal {
public Dog(String name) { super(name); }
@Override public void sound() { System.out.println("汪汪"); }
}
Java 繼承 = extends 單繼承 + 四權限控制可見性 + 重寫實現多態 + super 打通子父鏈 + 抽象類定契約。掌握重載/重寫八大鐵律、權限繼承表、super 三用法、抽象類構造器作用,即可駕馭複雜類層次。記住:繼承是強耦合,慎用組合優先;重寫是多態之門,嚴守契約。