成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在 TypeScript 中使用類和繼承

開發(fā) 前端
TypeScript是一種編程語言,它是JavaScript的超集。它通過添加靜態(tài)類型、類、接口和模塊等功能來擴(kuò)展JavaScript。

TypeScript是一種編程語言,它是JavaScript的超集。它通過添加靜態(tài)類型、類、接口和模塊等功能來擴(kuò)展JavaScript

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ù)用于初始化對象的屬性。

通過類的定義,我們可以創(chuàng)建多個具有相同屬性和行為的對象,實(shí)現(xiàn)代碼的復(fù)用和封裝。

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

繼承和子類

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

在TypeScript中,我們使用extends關(guān)鍵字來指定一個類繼承自另一個類

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ù)。

創(chuàng)建子類的實(shí)例與創(chuàng)建父類的實(shí)例類似:

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

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

在TypeScript中,我們可以使用訪問修飾符來限制類的屬性和方法的訪問。以下是幾個常用的訪問修飾符

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

通過使用訪問修飾符,我們可以控制類的成員的可見性,增強(qiáng)了封裝性和安全性

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í)例化,只能被繼承

以下是一個抽象類的示例:

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)

class antor extends Role {
    // 重寫抽象屬性
    name: string = "han";
    age: string = 20;

    // 重寫抽象方法
    attack(): void {
        console.log("正在被攻擊");
    }
    constructor () {
        super();
    }
}


責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2022-05-17 08:25:10

TypeScript接口前端

2023-01-05 17:13:28

TypeScript泛型組件

2022-05-10 09:12:16

TypeScript裝飾器

2025-01-20 08:40:00

Python對象

2022-11-18 14:58:34

JavaScript語言TypeScript

2015-01-27 09:16:46

DaaSDRaaS災(zāi)難恢復(fù)

2019-09-16 19:00:48

Linux變量

2020-11-30 11:55:07

Docker命令Linux

2014-07-02 09:47:06

SwiftCocoaPods

2020-04-09 10:18:51

Bash循環(huán)Linux

2024-09-06 11:34:15

RustAI語言

2021-01-22 05:53:08

C# IndexRange

2023-02-27 17:36:33

LinuxSIGINT信號

2022-06-23 08:00:53

PythonDateTime模塊

2021-06-09 09:36:18

DjangoElasticSearLinux

2021-03-09 07:27:40

Kafka開源分布式

2015-08-27 09:46:09

swiftAFNetworkin

2024-01-18 08:37:33

socketasyncio線程

2011-08-10 09:31:41

Hibernateunion

2018-05-16 10:32:06

Linux命令find
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: av国产精品| 欧美一级欧美三级在线观看 | 国产视频线观看永久免费 | 国产一级成人 | 在线成人免费视频 | 欧美区在线 | 孕妇一级毛片 | 日日干干| 欧美激情精品久久久久久免费 | 国产 欧美 日韩 一区 | www.99精品| 99re视频在线免费观看 | 综合第一页 | 久久精品一区 | 成人免费视频在线观看 | 免费视频一区二区 | www.成人免费视频 | 国产91中文 | 中文字幕在线观看第一页 | 免费黄色片在线观看 | 久久综合狠狠综合久久 | 国产日韩精品一区二区 | 国产亚洲精品久久久优势 | 激情婷婷 | 国产视频一二三区 | 日韩午夜在线播放 | 精品国产精品一区二区夜夜嗨 | 国产成人a亚洲精品 | 久久婷婷色 | 亚洲在线| 国产操操操| 免费a网站 | av电影一区 | 久久精品视频一区二区 | 欧美日本一区二区 | 国产日韩免费视频 | 日韩欧美三区 | 美女艹b | 久久久久一区 | 久久中文视频 | 亚洲一区av|