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

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

如何在 TypeScript 中使用類(lèi)和繼承

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

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

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

2Vf28資訊網(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}`);  }}

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

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

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

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

繼承和子類(lèi)

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

在TypeScript中,我們使用extends關(guān)鍵字來(lái)指定一個(gè)類(lèi)繼承自另一個(gè)類(lèi)2Vf28資訊網(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}.`);  }}

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

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

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

限制類(lèi)的屬性和方法的訪問(wèn)

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

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

通過(guò)使用訪問(wèn)修飾符,我們可以控制類(lèi)的成員的可見(jiàn)性,增強(qiáng)了封裝性和安全性2Vf28資訊網(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"

抽象類(lèi)

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

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

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

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

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


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

本文鏈接:http://www.www897cc.com/showinfo-26-14000-0.html如何在 TypeScript 中使用類(lèi)和繼承

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

上一篇: 如何讓你的Node.js應(yīng)用程序處理數(shù)百萬(wàn)的API請(qǐng)求

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

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
Top 主站蜘蛛池模板: 蒙自县| 石景山区| 谷城县| 英德市| 全南县| 阿图什市| 靖安县| 嘉荫县| 枣强县| 双辽市| 天镇县| 调兵山市| 吉木萨尔县| 婺源县| 牡丹江市| 锦州市| 南宫市| 邵东县| 荃湾区| 新密市| 乌鲁木齐县| 石城县| 柘荣县| 巴东县| 伽师县| 禄劝| 宝清县| 井冈山市| 漳平市| 赣州市| 昌图县| 赞皇县| 宁河县| 合作市| 五家渠市| 徐闻县| 沛县| 甘洛县| 江西省| 绥阳县| 天长市|