1. 专门用于给其他类继承的基类,不能创建实例,用于定义类的标准
    2. 抽象类中还有抽象成员,两者都通过 abstract 关键字定义
    1. abstract class ClassName {
    2. public abstract name: string
    3. public abstract play(): string
    4. public abstract get getName(): string
    5. public abstract set setName(value: string)
    6. }
    • 抽象成员只能在抽象类中定义,也需要修饰符,抽象成员必须被子类实现
      • 抽象属性:定义名称和类型
      • 抽象方法:定义名称和返回值类型,不需要函数体
      • 抽象取值器:定义名称和返回值类型,不需要函数体
      • 抽象存值器:定义名称和一个参数,不需要返回值类型和函数体
    • 抽象类可以定义实例成员,不需要实现
    class Child extends ClassName {
      public name = '阿坤'
      public play() {    
        return `${this.name}在打篮球`
      }
      public get getName() {
        return this.name
      }
      public set setName(value: string) {
        this.name = value
      }
    }
    
    • 抽象成员可以看做是一个类型,现实时符合要求即可,不需要再定义类型
    • 抽象类实现了多态