TS—抽象类
什么是抽象类
抽象类描述的是一种抽象的概念,无法被实例化,只能被继承。TS中的抽象类和JAVA中的抽象类是同样的概念
注意:
1.抽象类不能被实例化,只能被继承
2.抽象类继承在抽象类中,可以不实现,表示属于该抽象类的一个方法,如果继承的非抽象类中,那么抽象类的方法必须需要实现
为什么要有抽象类
-
代码复用:抽象类提供了一种方式来定义通用的接口和行为,使得代码更加模块化,易于复用和维护。
-
代码组织:抽象类有助于组织和结构化代码,使得代码更加清晰和易于理解。
-
多态性:抽象类允许以统一的方式处理不同类型的对象,从而实现多态性,即同一个接口可以用于多种不同的实例。
-
设计模式:抽象类是许多设计模式(如工厂模式、建造者模式等)的基础,它们提供了一种创建对象的通用方法。
抽象类的使用
使用abstract开头的方法叫做抽象方法,抽象方法没有方法体只能定义在抽象类中,继承抽象类时抽象方法必须要实现
(function () {/** 以abstract开头的类是抽象类,* 抽象类和其他类区别不大,只是不能用来创建对象* 抽象类就是专门用来被继承的类** 抽象类中可以添加抽象方法* */abstract class Animal1 {name: string;constructor(name: string) {this.name = name;}// 定义一个抽象方法// 抽象方法使用 abstract开头,没有方法体// 抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写abstract sayHello(): void;}
// 继承抽象帆帆发,必须执行抽象类的抽象方法class Dog extends Animal1 {sayHello() {console.log("hjsfd");}}const dog = new Dog("nn");// console.log(dog);dog.sayHello();
})();
注意点
继承抽象方法时,要执行抽象类的方法,同时抽象属性也要继承
继承时抽象属性以及抽象方法不能缺少,
进行实例化的时候也不能缺少任何一个属性,否则会报错
不要忘记添加abstract