抽象類
abstract class Machine {
constructor(public manufacturer: string) {
}
// An abstract class can define methods of it's own, or...
summary(): string {
return `${this.manufacturer} makes this machine.`;
}
// Require inheriting classes to implement methods
abstract moreInfo(): string;
}
class Car extends Machine {
constructor(manufacturer: string, public position: number, protected speed: number) {
super(manufacturer);
}
move() {
this.position += this.speed;
}
moreInfo() {
return `This is a car located at ${this.position} and going ${this.speed}mph!`;
}
}
let myCar = new Car("Konda", 10, 70);
myCar.move(); // position is now 80
console.log(myCar.summary()); // prints "Konda makes this machine."
console.log(myCar.moreInfo()); // prints "This is a car located at 80 and going 70mph!"
抽象類是其他類可以擴充套件的基類。他們不能自己例項化(即你不能做 new Machine("Konda")
)。
Typescript 中抽象類的兩個關鍵特徵是:
- 他們可以實現自己的方法。
- 他們可以定義繼承類必須實現的方法。
因此,抽象類在概念上可以被視為介面和類的組合。