📜  TypeScript继承(1)

📅  最后修改于: 2023-12-03 15:05:40.094000             🧑  作者: Mango

TypeScript继承

TypeScript是一个开源的编程语言,它是JavaScript的一个超集。它扩展了JavaScript的语法,使程序员能够编写安全、可维护的应用程序。其中最重要的一个特性就是继承。

什么是继承

在面向对象编程中,继承是指从一个已有的类创建一个新的类,新的类具有现有类的属性和方法。现有类被称为父类(或基类),新的类被称为子类。

子类可以继承父类的属性、方法和许多其他属性,同时可以添加自己的属性和方法。这减少了代码的冗余,并使代码更容易维护。

TypeScript中的继承

在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关键字

在子类中重写父类的方法时,可以使用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关键字可以在子类中调用父类的方法。