初級 免費 ⏱ 18:00

13-2 能力繼承:Extends 與 Super

學習物件導向的核心:繼承。掌握 extends 關鍵字、super 調用,以及如何重寫 (Override) 父類別的方法。

Inheritancesuper keywordOOP

13-2 能力繼承:Extends 與 Super

👋 **老師的話 (Script)**: "在現實世界中,兒子會繼承爸爸的基因。 在程式世界也一樣。我們不需要重複寫一樣的代碼。

我們可以建一個基礎的 Animal 類別,再延伸出 DogCat。 這一單元我們要學習如何透過 extends 來傳承能力, 以及那個神祕的 super() 到底是代表什麼。“

1. 使用 Extends 進行繼承

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} 正在發出聲音...`);
  }
}

class Dog extends Animal {
  // 繼承了 Animal 的所有東西
}

const bingo = new Dog("Bingo");
bingo.speak(); // "Bingo 正在發出聲音..."

2. super 關鍵字

如果你在子類別想要有自己的 constructor,你必須先執行 super() 來呼叫父類別的初始化。

class Cat extends Animal {
  constructor(name, lives) {
    super(name); // 呼叫父類別的 constructor
    this.lives = lives;
  }
}

3. 方法重寫 (Override)

子類別可以定義跟父類別一樣名稱的方法,來「覆蓋」掉它的行為。

class Lion extends Animal {
  speak() {
    console.log(`${this.name} 正吼叫著:吼!!!!`);
  }
}
🧪 Lab 32: 形狀繼承 建立一個 Shape 類別。 再建立一個 Circle 類別繼承它,並新增 radius 屬性。

💎 Pro 版預告:私有化與混入 類別裡面所有東西都是公開的嗎? 在付費單元,我們要學習 2026 年必備的 # Private 屬性, 以及如何使用 Mixins 來解決單一繼承的局限性。