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

TypeScript--静态属性,静态方法,抽象类,多态

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

静态属性,静态方法

class Per {
  public name: string;
  public age: number = 20; //静态属性

  static sex = "男";
  constructor(name: string) {
    this.name = name;
  }
  run():void {
    /*实例方法*/
    alert(`${this.name}在运动`);
  }
  static print():void {
    /*静态方法  里面只可以调用类里面静态的属性*/
    alert("print方法" + Per.sex);
  }
}

静态属性,静态方法的调用

var p1 = new Per("张三");
p1.run(); // 实例方法的调用
alert(p1.age); // 普通属性的调用

Per.print(); // 静态方法的调用
alert(Per.sex); // 静态属性的调用

多态

  • 多态:父类定义一个方法不去实现,让继承它的子类去实现
  • 每一个子类有不同的表现
  • 多态属于继承
class Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  eat(): void {
    //具体吃什么  不知道   ,  具体吃什么?继承它的子类去实现 ,每一个子类的表现不一样
    console.log("吃的方法");
  }
}

class Dog extends Animal {
  constructor(name: string) {
    super(name);
  }
  eat(): string {
    return this.name + "吃????";
  }
}

class Cat extends Animal {
  constructor(name: string) {
    super(name);
  }
  eat(): string {
    return this.name + "吃????";
  }
}

抽象类

  • typescript中的抽象类:它是提供其他类继承的基类,不能直接被实例化

  • abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。

  • abstract抽象方法只能放在抽象类里面

  • 抽象类和抽象方法用来定义标准 。 标准:Animal 这个类要求它的子类必须包含eat方法

abstract class Animal02 {
  public name: string;
  //抽象类的子类必须实现抽象类里面的抽象方法
  constructor(name: string) {
    this.name = name;
  }
  abstract eat(): any; //抽象方法不包含具体实现并且必须在派生类中实现。

  run() {
    console.log("其他方法可以不实现");
  }
}

//抽象类的子类必须实现抽象类里面的抽象方法
class Dog02 extends Animal02 {
  constructor(name: string) {
    super(name);
  }
  eat(): string {
    return this.name + "吃????";
  }
}

class Cat02 extends Animal02 {
  constructor(name: string) {
    super(name);
  }
  eat(): string {
    return this.name + "吃????";
  }
}