什么叫抽象类?

先把之前的Animal复制过来:

  1. calss Animal{
  2. name:string;
  3. constructor(name:string){
  4. this.name = name;
  5. }
  6. sayHello(){
  7. console.log('动物在叫~');
  8. }
  9. }
  10. class Dog extends Animal{
  11. sayHello(){
  12. console.log('汪汪汪');
  13. }
  14. }
  15. const dog = new Dog('旺财');

Dog是来创建对象的,但是这个Animal,我们不希望Animal来创建对象;而Animal是一个父类、超类、基类,它的作用就是被别的类继承的

那么我们怎么禁止一个类去创建对象呢?

我们可以在这个类最前面去创建一个**abstract**

  1. abstract class Animal{}

abstract开头的类是抽象类,这个抽象类和其他类区别不大,只是不能用来创建对象

抽象类就是专门用来继承的类

如果我不在抽象类去定义方法的具体实现了,我只把它的结构定义出来,具体的实现就由子类决定。

定义一个抽象方法

  1. abstract sayHello():void;

抽象方法使用abstract开头,没有方法体

抽象方法只能定义在抽象类中,并且子类必须对抽象方法进行重写

  1. abstract class Animal{
  2. abstract sayHell():void;
  3. }
  4. class Cat extends Animal{}

Cat会报错,原因是没有实现抽象方法sayHello()

所以抽象类的概念也很简单

抽象类是什么?

抽象类就是一个专门用其它类所继承的类,它**没有办法去创建实例对象**;它里面可以**定义抽象方法**