- 定义
抽象
使用关键字abstract
抽象类
目的或者作用:最终为子类服务
抽象类
是不能被实例化
的;但是子类可以实例化
- 抽象类中
- 可以有
抽象方法
,也可以有实例方法
抽象方法
不能有具体的实现
,会报错;在其子类
中需要具体实现
所有抽象方法
实例方法
可以被子类的实例
正常调用,但是抽象方法
调用的是其子类的实例方法
- 可以有
抽象属性
,但是一般不这么用(因为抽象属性也需要被子类实现)
- 可以有
通过例子理解
// 定义一个抽象类
abstract class Animal {
// 抽象属性,一般不这么用(因为还需要让子类去实现这个抽象属性)
// abstract name: string
// 抽象方法:不能有具体的实现,会报错
// abstract eat () {
// console.log('具体实现')
// }
abstract eat():void
// 实例方法
sayHi () {
console.log('hello')
}
}
// 抽象类是不能被实例化的
// const ani:Animal = new Animal()
// 定义一个子类(派生类)
class Dog extends Animal {
// 一般不这么用
// name:string
// 实现抽象类中的抽象方法,此时这个方法就是当前类的实例方法
eat () {
console.log('111')
}
}
const dog:Dog = new Dog()
// 调用的是子类的实例方法
dog.eat() // 111
// 调用的是抽象类中的实例方法
dog.sayHi() // hello