日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

如何在 TypeScript 中使用類和繼承

來源: 責(zé)編: 時間:2023-10-18 17:58:37 295觀看
導(dǎo)讀“TypeScript是一種編程語言,它是JavaScript的超集。它通過添加靜態(tài)類型、類、接口和模塊等功能來擴(kuò)展JavaScript”class Hero { name: string; age: number; constructor(name: string, age: number) { this.na

na128資訊網(wǎng)——每日最新資訊28at.com

TypeScript是一種編程語言,它是JavaScript的超集。它通過添加靜態(tài)類型、類、接口和模塊等功能來擴(kuò)展JavaScriptna128資訊網(wǎng)——每日最新資訊28at.com

na128資訊網(wǎng)——每日最新資訊28at.com

class Hero {  name: string;  age: number;  constructor(name: string, age: number) {    this.name = name;    this.age = age;  }  say(): void {    console.log(`my name is ${this.name}`);  }}

在上面的代碼中,我們定義了一個名為Hero的類,它具有name和age屬性,以及一個say方法。構(gòu)造函數(shù)用于初始化對象的屬性。na128資訊網(wǎng)——每日最新資訊28at.com

na128資訊網(wǎng)——每日最新資訊28at.com

通過類的定義,我們可以創(chuàng)建多個具有相同屬性和行為的對象,實(shí)現(xiàn)代碼的復(fù)用和封裝。na128資訊網(wǎng)——每日最新資訊28at.com

const Jieke = new Hero('jieke', 28)Jieke.say();  // 輸出:my name is jieke

繼承和子類

在面向?qū)ο缶幊讨校^承是一種重要的概念。通過繼承,我們可以創(chuàng)建一個類的子類(也稱為派生類),并繼承其屬性和方法。子類可以擴(kuò)展或修改父類的功能,從而實(shí)現(xiàn)代碼的重用和擴(kuò)展na128資訊網(wǎng)——每日最新資訊28at.com

在TypeScript中,我們使用extends關(guān)鍵字來指定一個類繼承自另一個類na128資訊網(wǎng)——每日最新資訊28at.com

class Superman extends Hero {  heroId: string;  constructor(name: string, age: number, heroId: string) {    super(name, age);    this.heroId = heroId;  }  skill(): void {    console.log(`${this.name}_${this.heroId}.`);  }}

我們定義了一個名為Superman的子類,它繼承自Hero父類。子類具有自己的屬性heroId,并通過調(diào)用super關(guān)鍵字來調(diào)用父類的構(gòu)造函數(shù)。na128資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建子類的實(shí)例與創(chuàng)建父類的實(shí)例類似:na128資訊網(wǎng)——每日最新資訊28at.com

const s1 = new Superman("Batman", 20, "12345");s1.say();  // 輸出:my name is Batmans1.skill();  // 輸出:Batman_12345

限制類的屬性和方法的訪問

在TypeScript中,我們可以使用訪問修飾符來限制類的屬性和方法的訪問。以下是幾個常用的訪問修飾符na128資訊網(wǎng)——每日最新資訊28at.com

  • public(默認(rèn)):可以在類內(nèi)部和外部訪問。
  • private:只能在類內(nèi)部訪問。
  • protected:可以在類內(nèi)部和子類中訪問,但不能在類外部訪問。

通過使用訪問修飾符,我們可以控制類的成員的可見性,增強(qiáng)了封裝性和安全性na128資訊網(wǎng)——每日最新資訊28at.com

class Person {  public name: string;  private age: number;  protected gender: string;  constructor(name: string, age: number, gender: string) {    this.name = name;    this.age = age;    this.gender = gender;  }  say() {    console.log(`Hi, my name is ${this.name}.`);  }  private sayAge() {    console.log(`I am ${this.age} years old.`);  }}class Student extends Person {  constructor(name: string, age: number, gender: string) {    super(name, age, gender);  }  sayGender() {    console.log(`My gender is ${this.gender}.`);  }}const person = new Person("Tom", 18, "male");console.log(person.name); // "Tom"console.log(person.age); // Error: Property 'age' is private and only accessible within class 'Person'.console.log(person.gender); // Error: Property 'gender' is protected and only accessible within class 'Person' and its subclasses.const student = new Student("Jane", 20, "female");console.log(student.gender); // "female"

抽象類

在TypeScript中,我們還可以使用抽象類(abstract class)來定義一個不可實(shí)例化的基類。抽象類提供了一種模板,用于派生其他類,并定義了一些必須由子類實(shí)現(xiàn)的抽象方法。抽象類不能被直接實(shí)例化,只能被繼承na128資訊網(wǎng)——每日最新資訊28at.com

以下是一個抽象類的示例:na128資訊網(wǎng)——每日最新資訊28at.com

abstract class Role {    // 定義抽象屬性    abstract name:string;     abstract age:number;    // 定義保護(hù)屬性,每個繼承子類都能繼承并調(diào)用的屬性    protected lastPoint!: {x:number,y:number};    protected status!: "run" | "risk" | "die";    // 定義保護(hù)方法,每個繼承子類都能繼承并調(diào)用的方法    protected getLastPoint (lastPoint:{x:number,y:number}) {        this.lastPoint = lastPoint;    }    // 定義抽象方法,在子類中重寫來執(zhí)行不同的任務(wù)    abstract attack():void;}

繼承抽象類的子類實(shí)例化對象通過調(diào)用同一抽象類規(guī)定的抽象方法,來實(shí)現(xiàn)了不同的操作,體現(xiàn)了類的多態(tài)na128資訊網(wǎng)——每日最新資訊28at.com

class antor extends Role {    // 重寫抽象屬性    name: string = "han";    age: string = 20;    // 重寫抽象方法    attack(): void {        console.log("正在被攻擊");    }    constructor () {        super();    }}


na128資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-14016-0.html如何在 TypeScript 中使用類和繼承

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 分布式系統(tǒng)的挑戰(zhàn):八個關(guān)鍵故障的解讀

下一篇: 如何通過 REST API 和 Spring MVC 提取電視節(jié)目詳細(xì)信息?

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 舞阳县| 宁南县| 吉木乃县| 四会市| 娱乐| 博乐市| 波密县| 中西区| 鄄城县| 巴楚县| 磐安县| 个旧市| 平山县| 二连浩特市| 通州市| 文山县| 凌海市| 沾化县| 遂川县| 霍山县| 莱芜市| 泉州市| 唐河县| 建宁县| 磴口县| 天津市| 昭苏县| 汝阳县| 右玉县| 和田县| 辰溪县| 沅江市| 阜新市| 剑河县| 友谊县| 南华县| 乌拉特中旗| 阳春市| 若羌县| 阜城县| 兴国县|