在 TypeScript 中,抽象类(Abstract Class)是一种特殊的类,用于作为其他类的基类,不能直接实例化。它可以包含抽象方法和非抽象方法,供子类继承和实现。
抽象类通过 `abstract` 关键字进行声明,使用抽象方法来定义接口规范,而不需要提供具体的实现。子类必须实现父类中的抽象方法,否则子类也必须声明为抽象类。抽象类可以提供通用的实现逻辑,以及要求子类必须实现的接口规范。
下面是一个使用抽象类的示例:
```typescript
abstract class Animal {
abstract makeSound(): void;move(): void {
console.log('Moving...');
}
}class Dog extends Animal {
makeSound(): void {
console.log('Woof woof!');
}
}class Cat extends Animal {
makeSound(): void {
console.log('Meow!');
}
}const dog = new Dog();
dog.makeSound(); // 输出: Woof woof!
dog.move(); // 输出: Moving...const cat = new Cat();
cat.makeSound(); // 输出: Meow!
cat.move(); // 输出: Moving...
```
在上面的示例中,`Animal` 是一个抽象类,其中包含了抽象方法 `makeSound` 和非抽象方法 `move`。`Dog` 和 `Cat` 类继承了 `Animal` 类,并实现了 `makeSound` 方法。由于 `Animal` 是抽象类,不能直接实例化,因此我们可以通过 `new Dog()` 和 `new Cat()` 创建具体的对象。
抽象类的主要作用是定义通用的行为和规范,并强制子类实现特定的方法。它提供了一种模板或基础,可以在具体的子类中进行扩展和实现。使用抽象类可以帮助我们设计合理的类继承结构和实现多态性。