📅  最后修改于: 2023-12-03 15:05:40.094000             🧑  作者: Mango
TypeScript是一个开源的编程语言,它是JavaScript的一个超集。它扩展了JavaScript的语法,使程序员能够编写安全、可维护的应用程序。其中最重要的一个特性就是继承。
在面向对象编程中,继承是指从一个已有的类创建一个新的类,新的类具有现有类的属性和方法。现有类被称为父类(或基类),新的类被称为子类。
子类可以继承父类的属性、方法和许多其他属性,同时可以添加自己的属性和方法。这减少了代码的冗余,并使代码更容易维护。
在TypeScript中,使用关键字extends
来实现继承。例如,我们有一个基类Animal
,它有一个方法eat
:
class Animal {
eat() {
console.log("Animal is eating");
}
}
然后我们有一个子类Dog
,它继承自Animal
并添加了自己的方法:
class Dog extends Animal {
bark() {
console.log("Dog is barking");
}
}
在这个例子中,Dog
继承了Animal
类的属性和方法,并且添加了它自己的bark
方法。
我们可以创建一个Dog
实例并调用它的方法:
const dog = new Dog();
dog.eat(); // "Animal is eating"
dog.bark(); // "Dog is barking"
子类可以重写父类的方法,这被称为方法覆盖。例如,我们可以重写Animal
类中的eat
方法:
class Dog extends Animal {
eat() {
console.log("Dog is eating");
}
bark() {
console.log("Dog is barking");
}
}
当我们调用eat
方法时,它将调用Dog
类中的方法而不是Animal
类中的方法:
const dog = new Dog();
dog.eat(); // "Dog is eating"
在子类中重写父类的方法时,可以使用super
关键字调用父类的方法。例如,我们可以重写Dog
类中的eat
方法,并在其中调用Animal
类中的eat
方法:
class Dog extends Animal {
eat() {
super.eat();
console.log("Dog is eating");
}
bark() {
console.log("Dog is barking");
}
}
当我们调用eat
方法时,它将首先调用Animal
类中的方法,然后再调用Dog
类中的方法:
const dog = new Dog();
dog.eat(); // "Animal is eating" "Dog is eating"
继承是面向对象编程中的重要概念,TypeScript通过extends
关键字支持继承。子类可以继承父类的属性和方法,并且可以重写父类的方法。使用super
关键字可以在子类中调用父类的方法。