天天看點

Typescript中類的使用

TypeScript 中類的概念和 ES6 中原生類的概念大部分相同,但是也額外增加了一些新的特性。

類的基本使用

 在上面的代碼中,我們使用關鍵字class定義了一個簡單的Person類。

類的繼承

TypeScrip 的繼承和

ES6

中的繼承是一樣的。關鍵字也是

extends

,比如我們這裡建立一個

Java

的類,然後繼承自

Person

類,在J

ava

類裡寫一個新的方法,叫做

sayWork

,具體代碼如下

Typescript中類的使用

 類的重寫

重寫就是子類可以重新編寫父類裡邊的代碼。現在我們在

Java

這個類裡重寫父類的

sayHello()

方法.

Typescript中類的使用

 super關鍵字的使用

在上面的代碼中,我們重寫了Person類的sayHello方法。但有的情況下,我們并不需要重寫方法,隻是想在原來的基礎上添加一些内容,這時候就可以使用

super

關鍵字,它代表父類中的方法。

Typescript中類的使用

 類的通路類型

類的通路類型就是基于三個關鍵詞

private

protected

public

,也是三種通路類型。

Typescript中類的使用

 public通路屬性

public

從英文字面的解釋就是

公共的

或者說是

公衆的

,在程式裡的意思就是允許在類的内部和外部被調用。

當我們執行上面的代碼的時候,之是以可以列印出typescript,是因為我們如果不在類裡對

name

的通路屬性進行定義,那麼它就會預設是

public

通路屬性。這就相當于下面的代碼:

Typescript中類的使用

 現在修改一下代碼:

Typescript中類的使用
Typescript中類的使用

 private通路屬性

private 通路屬性的意思是,隻允許再類的内部被調用,外部不允許調用

修改上面的例子,将name 屬性改成

private

Typescript中類的使用

 這時候name屬性在類的内部使用不會提示錯誤,而外部使用

直接報錯。

 protected通路屬性

protected 允許在類内及繼承的子類中使用。

現在修改上面的例子,将類内部的name的通路屬性換成protected,并添加一個子類

Teacher

類,繼承于

Person

Typescript中類的使用

 這時候外部調用

name

的代碼會報錯,内部的不會報錯,和

private

一樣,在子類中使用

this.name也

是不報錯的。

 類的構造函數

在上面的例子中,我們能在建立Person類的時候,給name屬性添加了一個預設值。如果我們不給name添加預設值,而是希望在new對象的時候,直接通過傳遞參數的方式給name指派,這個時候就需要用到構造函數了,構造函數的關鍵字是

constructor。

Typescript中類的使用

 簡化上面的代碼:

Typescript中類的使用

 類繼承中的構造器

在子類中使用構造函數需要用super()調用父類的構造函數:

Typescript中類的使用
Typescript中類的使用