TypeScript中abstract抽象类、抽象成员
在TypeScript中,我们可以使用abstract关键字来创建抽象类和抽象成员。抽象类不能被直接实例化,抽象成员仅提供声明,在子类中必须被实现。
- 抽象类:
抽象类中的抽象成员必须在子类中被实现。
abstract class Animal {
abstract makeSound(): void;
}
class Dog extends Animal {
makeSound() {
console.log('Woof!');
}
}
const dog = new Dog();
dog.makeSound(); // Output: Woof!
- 抽象方法:
抽象类中可以包含抽象方法,这些方法没有具体实现,必须在子类中被实现。
abstract class Animal {
abstract makeSound(): void;
}
class Dog extends Animal {
makeSound() {
console.log('Woof!');
}
}
const dog = new Dog();
dog.makeSound(); // Output: Woof!
- 抽象属性:
抽象类可以包含抽象属性,这些属性必须在子类中被实现。
abstract class Animal {
abstract name: string;
}
class Dog extends Animal {
name = 'Dog';
}
const dog = new Dog();
console.log(dog.name); // Output: Dog
- 抽象访问器:
抽象类可以包含抽象的get和set访问器,这些访问器必须在子类中被实现。
abstract class Animal {
private _age: number;
abstract get age(): number;
abstract set age(value: number);
}
class Dog extends Animal {
get age() {
return this._age;
}
set age(value: number) {
this._age = value;
}
}
const dog = new Dog();
dog.age = 5;
console.log(dog.age); // Output: 5
- 抽象类的使用注意点:
- 抽象类不能直接实例化,只能被用作子类的基类。
- 子类继承了一个抽象类,必须实现所有抽象的方法和属性。
- 抽象类可以包含抽象方法和抽象属性,也可以包含普通的方法和属性。
- 抽象类的子类必须包含抽象类中的所有抽象成员的实现,除非它自己也是抽象类。
评论已关闭