Typescript构造函数和继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Typescript构造函数和继承相关的知识,希望对你有一定的参考价值。

构造函数

构造函数用constructor作为函数名。当我们使用new运算符调用类的时候,类的构造函数就会被调用。构造函数与普通函数相同,在构造函数中可以定义可选参数、默认值参数和剩余参数。构造函数的返回值类型永远为类的实例类型。注意构造函数不允许定义返回值的类型。构造函数中也可以使用可访问性修饰符。如果不设置类型,默认是任何位置都能访问。如果设置为私有的,那么只允许在类的内部创建这个对象。如果在外部进行访问,会报编译错误。构造函数支持重载,构造函数指的是没有函数体的构造函数的声明。而且构造函数重载可以存在0个或者多个,但是构造函数实现只能有一个。

class Wrap 
age: number;
constructor(count: number)
this.age = count;


const teach = new Wrap(6);

参数成员

参数成员指的是把构造函数的形式参数声明为类的成员变量。形式参数可以添加任何一个可访问性修饰符或者readonly修饰符。readonly修饰符也可以和任意一个可访问性修饰符结合使用来定义只读的参数成员。

继承

ts中我们可以使用extends关键字来定义要继承的类。一般我们把Tea成为基类,Peo成为派生类。当派生类继承了基类,就拥有了基类的方法和属性,而且派生类也可以有自己的属性和方法。

class Peo extends Tea 

重写

我们可以在派生类中重写基类的变量和函数,重写的时候需要两个类中的名称相同。在派生类中可以通过​​super​​关键字来访问基类中的非私有成员。如果两个中拥有相同的成员时,我们只能通过super关键在来访问,而不能通过this去访问。如果我们重写了基类中的保护成员,可以将访问性设置为​​private​​或​​public​​。但是我们在重写时,要注意需要保护子类型的兼容性。构造函数中必须调用基类的构造函数,不然不能进行实例化。调用时可以使用​​super()​​进行操作。我们需要注意的是,在派生类的构造函数,引用的this语句必须放在super()调用之后,不然编译时会报错。

class Tear 
age: number = 18;
stuAea()
this.age = this.age == 16 ? 18 : 20;


class Stu extends Tear
// 编译错误
stuAea(age: number)

以上是关于Typescript构造函数和继承的主要内容,如果未能解决你的问题,请参考以下文章

typescript继承

java中,当实例化子类时会递归调用父类中的构造方法。这个说法对么?为啥

TypeScript核心篇——类(class)-可选参数-存取器-构造函数-静态属性方法-抽象类

Typescript派生类和抽象类

TypeScript系列教程11函数的使用

C++ 类的继承三(继承中的构造与析构)