什么叫抽象类?
先把之前的Animal
复制过来:
calss Animal{
name:string;
constructor(name:string){
this.name = name;
}
sayHello(){
console.log('动物在叫~');
}
}
class Dog extends Animal{
sayHello(){
console.log('汪汪汪');
}
}
const dog = new Dog('旺财');
Dog
是来创建对象
的,但是这个Animal
,我们不希望Animal
来创建对象;而Animal
是一个父类、超类、基类
,它的作用就是被别的类继承的
那么我们怎么禁止一个类去创建对象呢?
我们可以在这个类最前面去创建一个
**abstract**
abstract class Animal{}
以abstract
开头的类是抽象类,这个抽象类和其他类区别不大,只是不能用来创建对象
抽象类就是专门用来继承的类
如果我不在抽象类去定义方法的具体实现了,我只把它的结构定义出来,具体的实现就由子类决定。
定义一个抽象方法
abstract sayHello():void;
抽象方法使用abstract
开头,没有方法体
抽象方法只能定义在抽象类中,并且子类必须对抽象方法进行重写
abstract class Animal{
abstract sayHell():void;
}
class Cat extends Animal{}
Cat会报错,原因是没有实现抽象方法sayHello()
所以抽象类的概念也很简单
抽象类是什么?
抽象类就是一个专门用其它类所继承的类,它**没有办法去创建实例对象**
;它里面可以**定义抽象方法**
。