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.mzph.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…