抽象类描述的是一种抽象的概念,无法被实例化,只能被继承。TS中的抽象类和JAVA中的抽象类表示同一种概念。
注意点
1.抽象类不能被实例化,只能被继承
2.抽象类继承在抽象类中,可以不实现,表示属于该抽象类的一个方法,如果继承的非抽象类中,那么抽象类的方法必须需要实现
抽象类的实现实例
namespace a {
abstract class Animal {
name:string;
constructor(name:string){
this.name = name
}
}
class A extends Animal {
constructor(name:string){
super(name)
}
SDDDD getName(){
return this.name
}
}
let animal:A = new A("vvv")
console.log(animal.name);
}
dwqdqw export dwqdqw
抽象类中也可以使用public private,protected修饰词修饰
重写(override)与重载(overload)
1.重写是指子类重新实现父类中的方法。重写不表示删除父类的方法。在原生的JavaScript中可以理解成,子类继承父类,在子类中重新实现原型上面的方法,起到遮蔽原型方法的作用。
2.重载是指同一函数提供多个类型定义
//伪代码
function double2(x:number):number
function double2(x1:number,x2:number):number{
return 1
}
接口(interface)和抽象类(abstract )区别
1.接口一方面在面向对象编程中表示行为的抽象,另外可以用来描述对象的形状
2.接口就是把一些类中共有的属性和方法抽象出来,用来约束实现此接口的类
3.一个类可以实现多个接口,但是只能继承一个类
4.接口像是插件一样用来增强类,抽象类是具体类抽象的概念
5.在编译完TS代码之后,接口(interface)是被删除的,编译ES6之后的JavaScript代码,抽象类是直接转换成真是类
关于继承子类中super的知识点
1.在子类中super可以调用父类的静态方法,这说明super的类型属于构造函数
2.子类可以通过super.meth(),调用父类的方法,表示super表示原生类型
网友评论