继承在类的拓展使用中起到非常重要的作用,今天来总结一下继承及抽象类的概念和应用。
一、继承
当我们定义了一个大类,其本身所带的属性和方法可以通过继承给一个小类。同样的,都是抽象类型的概念。
在大类中的方法可以被小类进行调用,同时也会被小类进行复写,如果你需要对大类方法在继承的小类中进行输出,需要额外加上super.方法()函数。
//大类
class Person(){
name: string = "";
//方法定义,一定要用this.name,调用方法的参数。
say(){
document.write("I am a person, my name is:" + this.name);
}
}
//继承小类
class Student extends Person{
num: number = 0;
score:number = 0;
//如果不加上super函数调用,小类用同样方法,会覆盖大类方法。
say(){
super.say();
document.write("I am a student, my name is:” + this.name);
}
}
//实例化类,为对象
let a = new Student();
a.name = "ww";
a.say();
二、抽象类与抽象方法
抽象类在使用当中,可以规束类的使用和方法调用。只能用继承,本身不可以被实例化为对象。
抽象类的方法,如果不是抽象方法,可以不被继承的类所调用;但是如果抽象类中定义了抽象方法,则在继承类中也同样需要对该抽象方法进行调用。
//抽象类只能继承,不能直接实例化。
abstract class Person{
name :string = "";
//非抽象方法
run(){
}
//抽象方法
abstract eat(){
}
}
//抽象类的继承中,需要将其抽象方法同样继承
class Student extends Person{
//抽象类的抽象方法被继承,算上强制性的重写
eat(){
}
}
//实例化对象
//父类指针可以指向子类对象;
//虽然Person不能直接被实例,但是可以通过建立它的一个变量,继承它的抽象继承类,从而调用继承类的方法。
let a: Person = new Student();
a.eat();