10 # 類:繼承和成員修飾符

類的基本實現

  1. 類的成員屬性都是實例屬性,而不是原型屬性,類的成員方法都是原型方法。
class Dog {constructor(name: string) {this.name = name;}name: string;run() {}
}console.log(Dog.prototype);
let dog = new Dog("wangwang");
console.log(dog);
  1. 實例的屬性必須具有初始值或者在構造函數中賦值,否則會報錯。
class Dog {constructor(name: string) {// this.name = name;}name: string = "wangwang";run() {}
}

類的繼承

class Husky extends Dog {constructor(name: string, color: string) {super(name);// this 需在 super 之后this.color = color;}color: string;
}

類的成員修飾符

1. public

公有成員,類的所有屬性默認都是 public,對所有人可見

class Dog {constructor(name: string) {this.name = name;}// 顯示聲明public name: string;run() {}
}

2. private

類的私有成員,只能在類的本身調用,不能被類的實例調用,也不能被子類調用。

class Dog {constructor(name: string) {this.name = name;}name: string;private privateMethod() {}
}let dog = new Dog("wangwang");
// 下面會報錯:屬性“privateMethod”為私有屬性,只能在類“Dog”中訪問。
console.log(dog.privateMethod());class Husky extends Dog {constructor(name: string, color: string) {super(name);// this 需在 super 之后this.color = color;// 下面會報錯:屬性“privateMethod”為私有屬性,只能在類“Dog”中訪問。this.privateMethod();}color: string;
}

給構造函數添加 private, 這個類不能被實例化,也不能被繼承。

class Dog {private constructor(name: string) {this.name = name;}name: string;run() {}private privateMethod() {}
}// 下面報錯:類“Dog”的構造函數是私有的,僅可在類聲明中訪問。
let dog = new Dog("wangwang");// 下面報錯:無法擴展類“Dog”。類構造函數標記為私有。
class Husky extends Dog {constructor(name: string, color: string) {super(name);this.color = color;}color: string;
}

3. protected

受保護成員,只能在類的本身和子類中調用,不能被類的實例調用。

class Dog {constructor(name: string) {this.name = name;}name: string;protected protectedMethod() {}
}
let dog = new Dog("wangwang");
// 下面報錯:屬性“protectedMethod”受保護,只能在類“Dog”及其子類中訪問。
console.log(dog.protectedMethod());class Husky extends Dog {constructor(name: string, color: string) {super(name);this.color = color;// 子類調用不報錯this.protectedMethod();}color: string;
}

給構造函數添加 protected, 這個類不能被實例化,只能被繼承,相當于聲明了一個基類。

4. readonly

只讀屬性,一定要被初始化,不能被修改。

class Dog {constructor(name: string) {this.name = name;}name: string;run() {}readonly legs: number = 4;
}

構造函數的參數也可以添加修飾符,作用就是自動將參數變為實例的屬性,可以省略在類中的定義

class Husky extends Dog {constructor(name: string, public color: string) {super(name);this.color = color;}// 下面這個就可以省略// color: string;
}

5. static

類的靜態成員,只能通過類名來調用,不能被類的實例調用。也可以被繼承。

class Dog {constructor(name: string) {this.name = name;}name: string;run() {}static food: string = "bones"
}let dog = new Dog("wangwang");
// 可以
console.log(Dog.food); // bones
// 下面報錯
console.log(dog.food);class Husky extends Dog {constructor(name: string, public color: string) {super(name);this.color = color;}
}// 可以
console.log(Husky.food); // bones

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214983.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

知識筆記(五十四)———mysql比較varchar值大小_Mysql varchar大小長度問題

1、限制規則 字段的限制在字段定義的時候有以下規則: a) 存儲限制 varchar 字段是將實際內容單獨存儲在聚簇索引之外,內容開頭用1到2個字節表示實際長度(長度超過255時需要2個字節),因此最大長度不能超過65535。 b) 編碼長度限制 字符類…

低功耗模式的通用 MCU ACM32F0X0 系列,具有高整合度、高抗干擾、 高可靠性的特點

ACM32F0X0 系列是一款支持多種低功耗模式的通用 MCU。集成 12 位 1.6 Msps 高精度 ADC 以及比 較器、運放、觸控按鍵控制器、段式 LCD 控制器,內置高性能定時器、多路 UART、LPUART、SPI、I2C 等豐富的通訊外設,內建 AES、TRNG 等信息安全模塊&#xff0…

kubeadm搭建單master多node的k8s集群--小白文,圖文教程

參考文獻 K8S基礎知識與集群搭建 kubeadm搭建單master多node的k8s集群—主要參考這個博客,但是有坑,故貼出我自己的過程,坑會少很多 注意: 集群配置是:一臺master:zabbixagent-k8smaster,兩臺…

C++類和對象——(10)綜合示例

一、示例對象數組&#xff1a; #include<iostream> using namespace std;class Point{private:int x,y;public:Point(int px0,int py0){xpx;ypy;}void init(int px0,int py0){xpx;ypy;}void print(){cout<<"("<<x<<","<<y…

FFmpeg的AVInputFormat

文章目錄 結構體定義操作函數支持的AVOutputFormat 通過上面的分析&#xff0c;基本可以看到ffmpeg的套路了&#xff0c;首先一個context上下文&#xff0c;上下文里面一個priv_data 指針&#xff0c;然后再插件結構體中有一個priv_data_size&#xff0c;然后回調函數。 結構體…

JVM-GC調優-字節碼篇-01

筆記來源&#xff1a;JVM 注意&#xff1a;實在想學習可以看一下&#xff0c;讓自己更加了解JVM&#xff0c;看起來可能會枯燥。 JVM-概述 1、你的問題 1.1你被JVM傷害過嗎&#xff1f; 你是否也遇到過這些問題&#xff1f; 運行著的線上系統突然卡死&#xff0c;系統無法訪…

Flink SQL: 高效解析 Kafka 數據并存儲為 Parquet 至 HDFS

目錄 總體流程介紹 1. 從 Kafka 讀取數據 2. 使用 UDF 進行數據解析 3. 將

HTML中如何設置音頻和視頻?

文章目錄 &#x1f50a;嵌入音頻&#x1f39e;?嵌入視頻 &#x1f50a;嵌入音頻 HTML 元素用于在文檔中嵌入音頻內容。 元素可以包含一個或多個音頻資源&#xff0c; 這些音頻資源可以使用 src 屬性或者 元素來進行描述&#xff1a;瀏覽器將會選擇最合適的一個來使用。也可以使…

Centos7云服務器上安裝cobalt_strike_4.7。附cobalt_strike_4.7安裝包

環境這里是阿里的一臺Centos7系統。 開始安裝之前首先要確保自己安裝了java11及以上環境。 安裝java11步驟&#xff1a; sudo yum update sudo yum install java-11-openjdk-devel把服務器端&#xff08;CS工具分服務器端和客戶端&#xff09;的CS安裝到服務器上后給目錄下的…

Mongoose 對象文檔模型庫

一、介紹 Mongoose是一個對象文檔模型庫&#xff0c;官網&#xff1a;http://www.mongoosejs.net/ 二、作用 方便使用代碼操作Mongodb數據庫 三、使用流程 //1. 安裝 mongoose //2. 導入 mongoose const mongoose require(mongoose); //3. 連接數據庫 mongoose.connect(m…

某省資源交易中心 (js逆向)

該文章只是用于逆向學習&#xff0c;不得以商用或者是破壞他人利益的目的進行使用。如有侵權請聯系作者。 網站鏈接&#xff1a; bse64 aHR0cHM6Ly9nZ3p5ZncuZnVqaWFuLmdvdi5jbi9idXNpbmVzcy9saXN0Lw 分析環節 進入網站 進行翻頁請求時我們會發現改請求時ajax請求。 這里&…

hive-窗口函數

1 窗口函數語法 分析函數/專用窗口函數 over(partition by 列名 order by 列名 rows between 開始位置 and 結束位置) 常用的分析函數 常用的分析函數&#xff1a;sum()、max()、min()、avg()、count() 常用的專用窗口函數 專用窗口函數&#xff1a;row_number()、rank()、dens…

【簡易版】Linux下Protobuf 實現網絡版通訊錄--C++

一、介紹 該項目的主要目的是用于熟悉protobuf的使用&#xff0c;體驗數據在網絡中序列化反序列化的形式&#xff0c;并非一個完整的項目。 該通訊錄只實現了增加聯系人的功能。服務器端接收到請求后會將聯系人的信息打印。 二、環境搭建 使用Httplib庫&#xff0c;可以快速…

jsp文件引用的css修改后刷新不生效問題

問題 在對 JavaWeb 項目修改的過程中&#xff0c;發現修改了 jsp 文件引入的 css 文件的代碼后頁面的樣式沒有更新的問題。 原因 導致這個問題的原因可能是因為瀏覽器緩存的問題。 解決方法 下面介紹兩種解決方法&#xff0c;供大家參考&#xff1a; 1、給 link 標簽的 c…

TrustZone之安全虛擬化

在Armv7-A首次引入虛擬化時,它僅在非安全狀態中添加。在Armv8.3之前,Armv8也是如此,如下圖所示: 如前所述在切換安全狀態時,EL3用于托管固件和安全監視器。安全EL0/1托管受信任的執行環境(TEE),由受信任的服務和內核組成。 在安全狀態下,沒有對多個虛擬機的需…

Java基礎——什么是main方法

main方法是Java虛擬機調用的入口&#xff0c;該方法的權限必須是public&#xff0c;Java虛擬機在執行main方法時不必創建對象&#xff0c;所以該方法是static修飾&#xff0c;接收一個String類型的數組參數&#xff0c;數組保存執行Java命令時傳遞給所運行的類的參數&#xff0…

基于微信小程序和Spring、SpringMVC、MyBatis的汽車租賃管理系統

文章目錄 項目介紹主要功能截圖:部分代碼展示設計總結項目獲取方式?? 作者主頁:超級無敵暴龍戰士塔塔開 ?? 簡介:Java領域優質創作者??、 簡歷模板、學習資料、面試題庫【關注我,都給你】 ??文末獲取源碼聯系?? 項目介紹 基于微信小程序和Spring、SpringMVC、My…

Kafka生產問題總結及性能優化實踐

1、消息丟失情況 消息發送端&#xff1a; &#xff08;1&#xff09;acks0&#xff1a; 表示producer不需要等待任何broker確認收到消息的回復&#xff0c;就可以繼續發送下一條消息。性能最高&#xff0c;但是最容易丟消息。大數據統計報表場景&#xff0c;對性能要求很高&am…

JavaCV之rtmp推流(FLV和M3U8)

JavaCV與FFmpeg FFmpeg是一款開源的多媒體處理工具集&#xff0c;它包含了一系列用于處理音頻、視頻、字幕等多媒體數據的庫和工具。 JavaCV集成了FFmpeg庫&#xff0c;使得Java開發者可以使用FFmpeg的功能&#xff0c;比如視頻解碼、編碼、格式轉換等。 除了FFmpeg&#xff0…

LeetCode力扣每日一題(Java):35、搜索插入位置

一、題目 二、解題思路 1、我的思路&#xff08;又稱&#xff1a;論API的重要性&#xff09; 讀完題目之后&#xff0c;我心想這題目怎么看著這么眼熟&#xff1f;好像我之前學過的一個API呀&#xff01; 于是我回去翻了翻我之前寫的博客&#xff1a;小白備戰藍橋杯&#xf…