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

當前位置:首頁 > 科技  > 軟件

如何在 TypeScript 中使用類和繼承

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

Ev728資訊網——每日最新資訊28at.com

TypeScript是一種編程語言,它是JavaScript的超集。它通過添加靜態類型、類、接口和模塊等功能來擴展JavaScriptEv728資訊網——每日最新資訊28at.com

Ev728資訊網——每日最新資訊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方法。構造函數用于初始化對象的屬性。Ev728資訊網——每日最新資訊28at.com

Ev728資訊網——每日最新資訊28at.com

通過類的定義,我們可以創建多個具有相同屬性和行為的對象,實現代碼的復用和封裝。Ev728資訊網——每日最新資訊28at.com

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

繼承和子類

在面向對象編程中,繼承是一種重要的概念。通過繼承,我們可以創建一個類的子類(也稱為派生類),并繼承其屬性和方法。子類可以擴展或修改父類的功能,從而實現代碼的重用和擴展Ev728資訊網——每日最新資訊28at.com

在TypeScript中,我們使用extends關鍵字來指定一個類繼承自另一個類Ev728資訊網——每日最新資訊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,并通過調用super關鍵字來調用父類的構造函數。Ev728資訊網——每日最新資訊28at.com

創建子類的實例與創建父類的實例類似:Ev728資訊網——每日最新資訊28at.com

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

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

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

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

通過使用訪問修飾符,我們可以控制類的成員的可見性,增強了封裝性和安全性Ev728資訊網——每日最新資訊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)來定義一個不可實例化的基類。抽象類提供了一種模板,用于派生其他類,并定義了一些必須由子類實現的抽象方法。抽象類不能被直接實例化,只能被繼承Ev728資訊網——每日最新資訊28at.com

以下是一個抽象類的示例:Ev728資訊網——每日最新資訊28at.com

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

繼承抽象類的子類實例化對象通過調用同一抽象類規定的抽象方法,來實現了不同的操作,體現了類的多態Ev728資訊網——每日最新資訊28at.com

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


Ev728資訊網——每日最新資訊28at.com

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

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

上一篇: 分布式系統的挑戰:八個關鍵故障的解讀

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

標簽:
  • 熱門焦點
  • 一加Ace2 Pro官宣:普及16G內存 引領24G

    一加官方今天繼續為本月發布的新機一加Ace2 Pro帶來預熱,公布了內存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優惠,到手價12999元,比發布價便宜了7000元,在大屏電視市場開卷。據了解,Redmi MAX 100
  • K8S | Service服務發現

    一、背景在微服務架構中,這里以開發環境「Dev」為基礎來描述,在K8S集群中通常會開放:路由網關、注冊中心、配置中心等相關服務,可以被集群外部訪問;圖片對于測試「Tes」環境或者
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式。可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 半導體需求下滑 三星電子DS業務部門今年營業虧損預計超10萬億韓元

    7月17日消息,據外媒報道,去年下半年開始的半導體需求下滑,影響到了三星電子、SK海力士、英特爾等諸多廠商,營收明顯下滑,部分廠商甚至出現了虧損。作為
  • OPPO K11評測:旗艦級IMX890加持 2000元檔最強影像手機

    【Techweb評測】中端機型用戶群體巨大,占了中國目前手機市場的大頭,一直以來都是各手機品牌的“必爭之地”,其中OPPO K系列機型一直以來都以高品質、
  • onebot M24巧系列一體機采用輕薄機身設計,現已在各平臺開售

    onebot M24 巧系列一體機目前已在線上線下各平臺同步開售。onebot M24 巧系列采用一體化輕薄機身設計,最薄處為 10.15mm,擁有寶石紅、午夜藍、石墨綠、雅致
Top 主站蜘蛛池模板: 温泉县| 新巴尔虎右旗| 桂林市| 囊谦县| 会理县| 和田市| 淳安县| 正蓝旗| 如皋市| 左云县| 平利县| 浮山县| 竹溪县| 永平县| 鄱阳县| 滦平县| 新龙县| 德江县| 秭归县| 新宾| 巴青县| 景德镇市| 兴业县| 达拉特旗| 宜黄县| 临夏市| 曲沃县| 株洲县| 永年县| 滁州市| 正宁县| 临夏市| 蒲江县| 嘉义县| 新河县| 巴彦淖尔市| 龙南县| 广宁县| 灵宝市| 阿城市| 张家川|