欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

typescript——静态属性/方法 多态 抽象类

程序员文章站 2022-07-03 21:58:07
...

静态属性/方法

class Person {
  name: string
  static desc = 'static' // 静态属性

  constructor (name: string) {
    this.name = name
  }

  run (): void {
    console.log(`${this.name} is running`)
  }

  static print () { // 静态方法:里面只能调用静态属性
    console.log(`${Person.desc} function`)
  }
}

Person.print() // static function

let p = new Person('tom')
p.run() // tom is running

多态

多态也是继承的一种表现,父类定义一个方法不去实现,让继承它的子类去实现,每个子类有不同的表现

class Animal {
  name: string

  constructor (name: string) {
    this.name = name
  }

  eat () { // 动物都有吃,具体吃什么让继承它的子类去实现,每个子类有不同表现
    console.log('eat')
  }
}

class Dog extends Animal {
  constructor (name: string) {
    super(name)
  }

  eat () {
    return this.name + ' eat meat'
  }
}

class Cat extends Animal {
  constructor (name: string) {
    super(name)
  }

  eat () {
    return this.name + ' eat fish'
  }
}

let dog = new Dog('lucy')
let cat = new Cat('bob')
console.log(dog.eat()) // lucy eat meat
console.log(cat.eat()) // bob eat fish

抽象类

  • 它是提供其他类继承的基类,不能直接被实例化
  • 抽象类和抽象方法用来定义标准
  • 用 abstract 关键字定义抽象类和抽象方法
  • abstract 抽象方法只能放在抽象类里面
  • 抽象类中的抽象方法不包含具体实现并且必须在派生类(子类)中实现
  • 抽象类的子类必须实现抽象类里面的抽象方法,否则编译报错
例如:Animal 这个类要求它的子类必须包含 eat 方法

// 用 abstract 关键字定义抽象类和抽象方法
abstract class Animal {
  public name: string

  protected constructor (name: string) {
    this.name = name
  }

  // abstract 抽象方法只能放在抽象类里面
  // 抽象类中的抽象方法不包含具体实现并且必须在派生类(子类)中实现
  abstract eat (): any
}

class Dog extends Animal {
  constructor (name: string) {
    super(name)
  }

  // 抽象类的子类必须实现抽象类里面的抽象方法,否则编译报错
  eat (): any {
    console.log(`${this.name} is eating`)
  }
}

let dog = new Dog('john')
dog.eat() // john is eating

上一篇: 屏幕分辨率

下一篇: 屏幕分辨率