TypeScript语法(十七)

94 阅读2分钟

类的继承

面向对象的其中一大特性就是继承,继承不仅仅可以减少我们的代码量,也是多态的使用前提。

我们使用extends关键字来实现继承,子类中使用super来访问父类。

我们来看一下Student类继承自Person:

Student类可以有自己的属性和方法,并且会继承Person的属性和方法;

在构造函数中,我们可以通过super来调用父类的构造方法,对父类中的属性进行初始化;

类的成员修饰符

在TypeScript中,类的属性和方法支持三种修饰符: public、private、protected

public 修饰的是在任何地方可见、公有的属性或方法,默认编写的属性就是public的;

private 修饰的是仅在同一类中可见、私有的属性或方法;

protected 修饰的是仅在类自身及子类中可见、受保护的属性或方法;

public是默认的修饰符

只读属性readonly

如果有一个属性我们不希望外界可以任意的修改,只希望确定值后直接使用,那么可以使用readonly:

getters/setters

在前面一些私有属性我们是不能直接访问的,或者某些属性我们想要监听它的获取(getter)和设置(setter)的过程, 这个时候我们可以使用存取器。

抽象类abstract

我们知道,继承是多态使用的前提。

所以在定义很多通用的调用接口时, 我们通常会让调用者传入父类,通过多态来实现更加灵活的调用方式。

但是,父类本身可能并不需要对某些方法进行具体的实现,所以父类中定义的方法,,我们可以定义为抽象方法。

什么是 抽象方法? 在TypeScript中没有具体实现的方法(没有方法体),就是抽象方法。

抽象方法,必须存在于抽象类中;

抽象类是使用abstract声明的类;

抽象类有如下的特点:

抽象类是不能被实例的话(也就是不能通过new创建)

抽象方法必须被子类实现,否则该类必须是一个抽象类;

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第45天,点击查看活动详情