📜  如何在 Typescript 中实现继承?

📅  最后修改于: 2022-05-13 01:56:37.021000             🧑  作者: Mango

如何在 Typescript 中实现继承?

继承是面向对象编程语言的主要支柱,继承用于从现有类创建新类。新创建的类称为派生类,而继承派生类的类称为基类。继承的派生类获取基类的属性和行为。 TypeScript 支持单继承和多级继承。我们不能使用 TypeScript 实现混合继承和多重继承。继承使用基于类的继承,它可以使用打字稿中的扩展关键字来实现。在本文中,我们将了解 TypeScript 是如何实现继承的。

句法:

class baseClassName {
}
class derivedClassName extends baseClassName {
}

TypeScript 中的单一继承:在单一继承中,基类的属性和行为最多可以继承到一个派生类中。它用于向已实现的类添加新功能。

示例:在此示例中,我们创建一个 Person 作为基类,并使用单继承实现 Teacher 作为派生类。

Javascript
// Base class
class Person {
  Name: string;
  constructor(name: string) {
    this.Name = name;
  }
}
// Deriving Teacher class
class Teacher extends Person {
  Payment: number;
  constructor(name: string, payment: number) {
    super(name);
    this.Payment = payment;
  }
  display(): void {
    console.log("Teacher's Name: " + this.Name);
    console.log("Teacher's Payment " + this.Payment);
  }
}
// Create Object
let obj = new Teacher("GeeksforGeeks", 8500000);
obj.display();


Javascript
// Base class
class Vehicle {
  Type(): void {
    console.log("Car");
  }
}
  
// Inherites from Vehicle
class Car extends Vehicle {
  Brand(): void {
    console.log("ABC");
  }
}
  
// Inherites all properties of 
// Vehicle and Car class
class carModel extends Car {
  Model(): void {
    console.log("ABC2021");
  }
}
  
// Object creation
let obj = new carModel();
obj.Type();
obj.Brand();
obj.Model();


输出:

Teacher's Name: GeeksforGeeks 
Teacher's Payment 8500000

2.多级继承:

在多级继承中,派生类充当另一个派生类的基类。新创建的派生类获取其他基类的属性和行为。

示例:在此示例中,我们创建了一个 Vehicle 作为基类,并创建了一个 Car 作为子类,它派生了名为 carModel 的新类,并且 carModel 类获取了 Vehicle 以及 Car 类的所有特性。

Javascript

// Base class
class Vehicle {
  Type(): void {
    console.log("Car");
  }
}
  
// Inherites from Vehicle
class Car extends Vehicle {
  Brand(): void {
    console.log("ABC");
  }
}
  
// Inherites all properties of 
// Vehicle and Car class
class carModel extends Car {
  Model(): void {
    console.log("ABC2021");
  }
}
  
// Object creation
let obj = new carModel();
obj.Type();
obj.Brand();
obj.Model();

输出:

Car  
ABC
ABC2021