总是记不住的这一章
实例方法,需要实例化的之后使用的方法是实例方法(个人理解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
抽象类和抽象想法用来定义一个标准,定义一些子类必须包含的属性或方法(方法定义不能实现),一个抽象类里面最好要有一个抽象方法,不然定义抽象类没有意义
上图 定义了一个animal类 里面有两个属性是抽象类,也就是子类必须继承的属性,dog类只继承了eat没有继承name,编译时报错
注意:抽象类不能被直接实例化,报错大部分是给子类提供的基类,大致定义