Javascript中的Class有兩種特性,繼承(Inheritance)和多型or多態(Polymorphism)。
*繼承(Inheritance):
建立一個'子Class',並從'父Class'繼承相關屬性,程式碼如下:
class Animal {
constructor(name) {
this.name = name
}
makeSound() {
return 'Animal sound'
}
}
class Dog extends Animal {
constructor(name) {
super(name)
}
}
const dog = new Dog('Dino')
console.log(dog.name) // Output: 'Dino'
建立Dog class的時候,使用extends以及super()來繼承'父Class'的屬性,因此可以使用dog.name來取得'Dino'。
*多型or多態(Polymorphism):
就算'子Class'是從'父Class'繼承來的,還是可以客製化'子Class'的屬性,程式碼如下:
class Dog extends Animal {
constructor(name) {
super(name)
}
makeSound() {
return 'Woof!';
}
}
const dog = new Dog('Dino')
console.log(dog.makeSound()) // Output: 'Woof!'
建立Dog class的時候,重新定義了makeSound(),同一個屬性在不同的class中有不同的實現方式,這就叫做多型。(建立新的屬性不算是多型)