TS基础——抽象类 abstract


  1. 关键字abstract
  2. 抽象类不允许被实例化,抽象类的存在只为了向子类服务
  3. 抽象类中包含抽象属性/方法,和普通属性/方法
  4. 被抽象的属性/方法不允许拥有具体的内容
  5. 子类如果不是抽象类,就必须将所有抽象父类的方法/属性具体化
abstract class Animal {  //定义一个抽象类
    abstract name: string  //抽象一个name属性,但是name属性不允许有值,也不允许被 constructor 赋值
    abstract eat(): void  //抽象一个方法,方法不允许有内容,只允许标注返回值类型
    run(): void {  //这是一个普通方法

    }
}
class Dog extends Animal {
    //因为Dog不是抽象类所以必须有name和eat();第5条
    /*
    只能这样赋值,不允许用constructor(name: string) {
      this.name = name
    }因为父类没有用是抽象的,没用constructor赋予具体内容
    */
    name: string = '狗'

    gender: string
    constructor(gender: string) {
        super()  //此处super中也不允许有父类的抽象属性
        this.gender = gender
    }
    eat(): void {
        console.log('狗吃饭');
    }
}
const ani: Animal = new Animal() //不允许(第2条)
const dog: Dog = new Dog('公')
console.log(dog.name);  //狗
dog.eat()


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM