国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TypeScript學(xué)習(xí)4-類

meislzhua / 2253人閱讀

摘要:再拿動物來說,鳥類是動物的一種,它不光繼承了動物的特性,它還有自己的專屬特性它有翅膀,它能飛。常見多態(tài)有覆蓋重載兩類。抽象類抽象方法抽象類不能實(shí)例化,抽象方法不能實(shí)現(xiàn),需要在子類中實(shí)現(xiàn)。抽象類實(shí)現(xiàn)子類繼承了父類的類,是相對的。

類-面向?qū)ο蟮幕A(chǔ)

面向?qū)ο缶幊?,?yīng)該是目前使用最廣泛的編程模式。

JavaScript是基于原型的語言,自從廣泛使用之后,面向?qū)ο蟮母脑煲恢睕]停過,不少第三方庫都使用原型實(shí)現(xiàn)了JavaScript下面的類,如:MooTools,Backbone。再到ES6標(biāo)準(zhǔn),直接原生支持了類定義,不過只能算語法糖級的支持。

TypeScript對面向?qū)ο笾С值母鼜氐?,非常接近Java、C#語言,支持接口、類、抽象、繼承、可見性等面向?qū)ο筇匦浴?/p> 面向?qū)ο笕筇卣?/b> 抽象

即同一類事物,我們可以把它抽象成一個(gè)描述,就是類。對外,我們看到的就是這個(gè)類描述,它有什么屬性,它能干嘛,取決于它對外公開的屬性和方法。它的內(nèi)部如何運(yùn)作,我們無需關(guān)注。

比如我們要用面向?qū)ο笳Z言描述動物:動物有一個(gè)名字,動物能移動。它怎么做到移動呢,外部是不用關(guān)心的。

繼承

如果抽象是基礎(chǔ),那么繼承就是面向?qū)ο蟮母叻濉3橄蠼o了編程語言描述世界的畫筆,那么繼承就給了它色彩。

繼承類擁有父類公開的、保護(hù)的屬性和方法,同時(shí)還可以添加自己的屬性和方法。

一般分為實(shí)現(xiàn)繼承、接口繼承。

再拿動物來說,鳥類是動物的一種,它不光繼承了動物的特性,它還有自己的專屬特性:它有翅膀,它能飛。

多態(tài)

多態(tài)簡單來說,就是同一個(gè)類的對象,表現(xiàn)出不同的特性,是繼承延伸出來的表現(xiàn)結(jié)果。

常見多態(tài)有覆蓋、重載兩類。

TypeScript中的類方法不支持真正意義上的重載,可以通過增加可選參數(shù)來達(dá)到重載的目的。  
具體的原因,是因?yàn)橹剌d在編譯之后,是以多個(gè)不同名的函數(shù)存在的,調(diào)用哪個(gè)也是編譯的時(shí)候確定的。而TypeScript需要支持JavaScript來調(diào)用它,JavaScript不知道編譯之后的函數(shù)名。
后面會拿一篇文章來分析。

還是拿動物為例,繼承并覆蓋move方法之后,鳥類實(shí)現(xiàn)了飛、魚類實(shí)現(xiàn)了游。

TypeScript中類使用的常見場景

使用TypeScript描述類。

// 知識點(diǎn):抽象類
abstract class Animal {
    // 知識點(diǎn):私有成員
    private _name: string;

    // 知識點(diǎn):存取器
    get name(): string {
      return this._name;
    }
  
    constructor(name: string) {
      this._name = name;
    }
  
    // 知識點(diǎn):抽象方法
    abstract move(distance: number): void;
}

描述子類

// 知識點(diǎn):實(shí)現(xiàn)抽象類的子類
class Bird extends Animal {
  // 知識點(diǎn):只讀成員
  // 知識點(diǎn):靜態(tài)成員
  static readonly classification = "bird";
  
  // 知識點(diǎn):super()
  constructor(name: string) {
      super(name);
  }
  
  // 知識點(diǎn):抽象方法實(shí)現(xiàn)
  move(distance: number): void {
      console.log(`moved ${distance}.`)
  }
}

const enum MoveMode {
  WALK,
  FLY
}

// 知識點(diǎn):子類
class Owl extends Bird {

  private _mode: MoveMode;
  
  get mode(): MoveMode {
      console.log("read move mode.");
      return this._mode;
  }
  
  set mode(mode: MoveMode) {
      console.log("changed move mode.");
      this._mode = mode;
  }
  
  // 知識點(diǎn):super()
  constructor(name: string) {
      super(name);
      this._mode = MoveMode.FLY;
  }
  
  // 知識點(diǎn):方法覆蓋
  move(distance: number): void {
    switch (this._mode) {
      case MoveMode.FLY:
          console.log(`fly ${distance}.`);
          break;
      case MoveMode.WALK:
          console.log(`walked ${distance}.`);
          break;
      default:;
    }
  }

}
類相關(guān)的知識點(diǎn)總結(jié)

從上述示例中,整理出以下知識點(diǎn),請結(jié)合示例回顧,加強(qiáng)一下理解。

抽象類、抽象方法

抽象類不能實(shí)例化,抽象方法不能實(shí)現(xiàn),需要在子類中實(shí)現(xiàn)。

抽象類實(shí)現(xiàn)

子類

繼承了父類的類,是相對的。

類成員可見性

public,公開,默認(rèn)的可見性

protected,保護(hù),子類可見

private,私有,本類可見

靜態(tài)成員

靜態(tài)成員屬于類

只讀成員

只讀,即初始化后不可修改,只能在聲明和構(gòu)造函數(shù)里初始化。

類成員存取器

可以像成員一樣來訪問,一般用來做一些處理,比如校驗(yàn),格式化等。

類方法覆蓋

覆蓋父類方法,實(shí)現(xiàn)自己的特性。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/110301.html

相關(guān)文章

  • TypeScript入門學(xué)習(xí)之路

    摘要:學(xué)習(xí)之路學(xué)習(xí)之路安裝環(huán)境起步開發(fā)工具自動編譯文件中的數(shù)據(jù)類型中的函數(shù)中類的定義繼承中的繼承中的繼承類的靜態(tài)屬性和靜態(tài)方法類的多態(tài)的抽象類中的接口中的泛型學(xué)習(xí)之路安裝環(huán)境查看版本起步新建通過命令編譯此時(shí)路徑下 ...

    jemygraw 評論0 收藏0
  • 深入學(xué)習(xí)TypeScript

    摘要:是的超級,遵循最新的規(guī)范相當(dāng)于包含了的語法。表示方法沒有返回任何類型類型表示的是那些永不存在的值的類型,例如異常錯(cuò)誤寫法錯(cuò)誤三函數(shù)內(nèi)容概述函數(shù)的定義可選參數(shù)默認(rèn)參數(shù)剩余參數(shù)函數(shù)重載箭頭函數(shù)。 一、Typescript 介紹、環(huán)境搭建 1.1 Typescript 介紹 1.TypeScript 是由微軟開發(fā)的一款開源的編程語言,像后端 java、C#這樣的面向?qū)ο笳Z言可以讓 js 開發(fā)...

    趙連江 評論0 收藏0
  • 從項(xiàng)目中由淺入深的學(xué)習(xí)typescript (3)

    摘要:序列文章從項(xiàng)目中由淺入深的學(xué)習(xí)微信小程序和快應(yīng)用從項(xiàng)目中由淺入深的學(xué)習(xí)前言為什么會有大家有沒想過這個(gè)問題原因是是弱類型編程語言也就是申明變量類型可以任意變換。是的超集,也相當(dāng)于預(yù)處理器本文通過一個(gè)項(xiàng)目來讓你快速上手。 showImg(https://segmentfault.com/img/bVbruJw?w=1024&h=768); 序列文章 從項(xiàng)目中由淺入深的學(xué)習(xí)vue,微信小程序...

    ninefive 評論0 收藏0
  • TypeScript VS JavaScript 深度對比

    摘要:是事件驅(qū)動的,只根據(jù)用戶的操作做出相應(yīng)的反應(yīng)處理。中的數(shù)據(jù)要求帶有明確的類型,不要求。這些小小的變化可能會產(chǎn)生嚴(yán)重的意想不到的后果,因此有必要撤銷這些變化。的優(yōu)勢相比于,也有一些明顯優(yōu)勢。因此在應(yīng)對大型開發(fā)項(xiàng)目時(shí),使用更加合適。 showImg(https://segmentfault.com/img/bV1Dx7?w=740&h=322); TypeScript 和 JavaScri...

    William_Sang 評論0 收藏0
  • 如何從JavaScript跨越到TypeScript [基礎(chǔ)進(jìn)階知識點(diǎn)]

    摘要:接口前端程序員很難理解的點(diǎn)也是一門面向?qū)ο蟮恼Z言,但是中它是基于原型實(shí)現(xiàn)的,中使用了類,這樣會更清晰的體會到面向?qū)ο筮@一說法,但是實(shí)際在中的面向?qū)ο蟾油暾@些語言一樣,通過接口和類去完整的面向?qū)ο缶幊獭? 從入門到放棄的java 初中時(shí)自學(xué)過JAVA,學(xué)了大概一個(gè)多月吧, 學(xué)了一個(gè)多月,看視頻這些,后面放棄了編程。 依稀記得,那段日子極度苦逼,我想如果當(dāng)時(shí)是學(xué)javaScrip...

    wangym 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<