📅  最后修改于: 2023-12-03 15:35:24.307000             🧑  作者: Mango
在 TypeScript 中,我们可以通过继承及方法覆盖来扩展已有的类,从而让代码更加复用和灵活。
继承是面向对象编程的核心概念之一,它可以让子类继承父类的属性和方法,从而复用父类的代码。在 TypeScript 中,我们使用 extends
关键字来实现继承。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
move(distanceInMeters: number = 0) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
}
class Dog extends Animal {
bark() {
console.log('Woof! Woof!');
}
}
const dog = new Dog('Snuffy');
dog.move(10); // Snuffy moved 10m.
dog.bark(); // Woof! Woof!
在上面的代码中,Dog
类继承了 Animal
类,并新增了 bark
方法。
在子类中,我们可以通过覆盖父类的方法来改变方法的行为。在 TypeScript 中,我们可以使用 super
关键字来调用父类的方法。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
move(distanceInMeters: number = 0) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
}
class Snake extends Animal {
move(distanceInMeters: number = 5) {
console.log(`${this.name} slithered ${distanceInMeters}m.`);
super.move(distanceInMeters);
}
}
const snake = new Snake('Sammy');
snake.move(); // Sammy slithered 5m. Sammy moved 5m.
在上面的代码中,Snake
类覆盖了 Animal
类的 move
方法,并新增了打印蛇爬行的信息。而在 move
方法中,我们使用了 super.move
来调用父类的 move
方法,从而实现了方法的覆盖和扩展。
通过继承和方法覆盖,我们可以在 TypeScript 中扩展已有的类,让代码更加复用和灵活。同时,通过 super
关键字的使用,我们可以在子类中调用父类的方法,达到方法覆盖和扩展的效果。