// 抽象类
// TS 通过 public、private、protected 三个修饰符来增强了 JS 中的类
// 所谓抽象类,是指只能被继承,但不能被实例化的类,就这么简单。
// 抽象类有两个特点:
// 抽象类只能被继承,不能被实列化
// 抽象类中的抽象方法必须被子类实现
// 抽象类用一个 abstract 关键字来定义,我们通过两个例子来感受一下抽象类的两个特点。
// abstract class Animal{}
// const a = new Animal()
abstract class Animal{
constructor(name:string){
this.name = name
}
public name:string
public abstract sayHi():void
}
class Dog extends Animal{
constructor(name:string){
super(name)
}
public sayHi(){
console.log('zhang')
}
}
// 为什么叫抽象类?
// 很显然,抽象类是一个广泛和抽象的概念,不是一个实体,就比如上文的例子,动物这个概念是很广泛的,猫、狗、狮子都是动物,但动物却不好是一个实例,实例只能是猫、狗或者狮子。
// 官方一点的说法是,在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
// 比如 Animal 类只是具有动物都有的一些属性和方法,但不会具体到包含猫或者狗的属性和方法。
// 所以抽象类的用法是用来定义一个基类,声明共有属性和方法,拿去被继承。
// 抽象类的好处是可以抽离出事物的共性,有利于代码的复用。
作者:前端阿林
链接:https://juejin.cn/post/7068081327857205261
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论