什么叫抽象类?
先把之前的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()
所以抽象类的概念也很简单
抽象类是什么?
抽象类就是一个专门用其它类所继承的类,它**没有办法去创建实例对象**;它里面可以**定义抽象方法**。
