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