ts抽象类,类的静态属性、静态方法、抽象类、多态

403 阅读1分钟

总是记不住的这一章

实例方法,需要实例化的之后使用的方法是实例方法(个人理解new了之后才能用的)

静态方法直接类名.方法调用

ts声明静态方法,关键字static****

class   Person{
public name:string
constructor(name:string){
this.name = name
}
work(){
   alert(`${ this.name}在工作`) //弹出小白在工作
}
static sleep(){
//静态方法 声明
    alert(`${ this.name}在睡觉`) //弹出Personb.在睡觉   静态方法不能使用实例属性
    alert(`${ this.sleepObj}在睡觉`) //  弹出我是小白在睡觉  静态方法可以访问静态属性
} 
static sleepObj="我是小白"

}

let p = new  Person("小白")

p.work()//实例方法调用

Person.sleep()//  静态方法调用

多态 定义:父类里面定义一个方法不去实现,让子类去实现,每一个子有不同的表现

class  Animal{
constructor(){
}
eat(){
//定义了小动物吃的方法  
}
}
class  Dog extends  Animal{
constructor(){
super()
}
eat(name:string){
   console.log(`${name}吃狗粮`)
}
}

class  Cat extends  Animal{
constructor(){
super()
}
eat(name:string){
   console.log(`${name}吃猫粮`)
}
}

父类定义了eat方法  没说是谁吃,也没说吃什么,由子类来表现

** 抽象类,抽象方法** 关键字 abstract

抽象类和抽象想法用来定义一个标准,定义一些子类必须包含的属性或方法(方法定义不能实现),一个抽象类里面最好要有一个抽象方法,不然定义抽象类没有意义

1652862111(1).jpg 上图 定义了一个animal类 里面有两个属性是抽象类,也就是子类必须继承的属性,dog类只继承了eat没有继承name,编译时报错

注意:抽象类不能被直接实例化,报错大部分是给子类提供的基类,大致定义

1652870999(1).jpg