vue3第三十八节(TS 之 class 类实现及使用)

引言:面相对象编程在我们工作中必须同时也是不可或缺的一部分,想要对JavaScript | TypeScript 有更加深刻的理解应用,我们需要充分学习应用

1、类的基本用途

在TS中
类描述了所创建的对象共同的属性和方法。TypeScript 支持面向对象的所有特性,比如 类、接口等。
具体包含以下方面
字段 − 字段是类里面声明的变量。字段表示对象的有关数据。
构造函数 − 类实例化时调用,可以为类的对象分配内存。
方法 − 方法为对象要执行的操作

class Person {// 变量name: string;age: number;// 静态变量static other: string = '静态变量';// 构造函数constructor(name: string, age: number) {this.name = name;this.age = age;}// 方法// 静态变量只能在静态方法中使用static say(word: string): void {console.log(this.other + '说话' + word)}play(things: string): void {console.log(this.name + ' ' + things)}
} 

2、类的继承

类的继承是通过 extend 来实现的 子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承
其中:父类称为:超类|基类
子类成为:派生类

注意TypeScript 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承泪如(B 继承 A,C 继承 B)。

class Person1 extends Person {like: string;constructor(name: string, age: number, like: string) {// 调用父类的构造函数super(name, age); this.like = like;}// 子类中有父类同名的方法时,则会重写父类中的方法play(things: string):void {console.log('play', things);}
}

3、多重继承

Person1 继承了 Person, 而 Student 又继承了 Person1
// 子类 继承 父类2

class Student extends Person1 {public grade: string;constructor(name: string, age: number, grade: string) {super(name, age, grade); // super 引用父类的构造函数this.grade = grade;}// 方法重写:子类方法名和父类相同,将重写父类方法play(ball: string): void {console.log(this.name + "在玩" + ball);}}

4、static 关键字

static 关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。

如父类 Person 中定义的 other属性,say方法 都是静态成员

其他关键字还有
public(默认):公有,可以在任何地方被访问
protected: 受保护,可以被其自身以及其子类访问
private: 私有,只能被其定义所在的类访问。
readonly: 可以使用 readonly关键字将属性设置为只读的。 只读属性必须在声明时或构造函数里被初始化

class StudentA {public name: string;protected age: number;private love: string;constructor(name: string, age: number, love: string) {this.name = name;this.age = age;this.love = love;}say(): void {console.log("hello world");}}

5、类实现 通过 implements 实现接口

可以使用一个 implements 子句来检查一个类,是否满足了一个特定的接口

注意: 实现一个带有可选属性的接口并不能创建该属性,只要一个接口继承了某个类, 那么就会继承这个类中所有的属性和方法,但是只会继承属性和方法的声明, 不会继承属 性和方法实现

**与`extends`的区别​**    extends: 继承某个类,继承之后可以使用父类的方法,也可以重写父类的方法
implements:实现某个接口,必须重写才可以使用// 定义接口规范
interface PersonE {name: string;age?: number; // 在接口的成员变量后加 ? 代表此成员变量可不用被类实现eat(food: string): void; // 在接口中可不写方法体}

// 定义类实现接口()

 class StudentE implements PersonE {name: string;constructor(name: string) {this.name = name;}// 在类中必写方法体eat(food: string): void {console.log(this.name + "吃" + food);}}

应用

  let alias = new StudentE("alias");console.log(alias);alias.eat("玉米糁");

7、抽象类 关键字:abstract

A/抽象类不可以被实例化,只能被继承
B/抽象类中定义的抽象方法必须被继承它的子类重写
C/抽象类中的方法和变量可以是抽象的(被 `abstract` 修饰)也可以是不抽象的,但接口的方法和变量都是抽象的(都要被重写)
D/在抽象类中的抽象方法不写方法体
E/一个类只能继承一个抽象类//  定义抽象类
abstract class PersonF {name: string;age?: number;constructor(name: string, age: number) {this.name = name;this.age = age;}// 非抽象方法
eat(food: string): void {console.log(this.name + "吃" + food);}// 抽象方法,无方法体abstract play(ball: string): void;
}

// 定义子类继承抽象类

class StudentF extends PersonF {sex: string;constructor(name: string, age: number, sex: string) {super(name, age);this.name = name;this.sex = sex;}// 在子类中必须重写抽象类的抽象方法play(ball: string): void {console.log(this.name + "玩" + ball);}
}
let alias = new Student("alias", 18, "汉子");
console.log(alias);
alias.eat("香蕉");
alias.play("象棋");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

钉钉二次开发-企业内部系统集成官方OA审批流程

场景:企业内部开发人员不足,需要从以前集成Activiti的方式转换成集成钉钉官方OA审批流程,提高开发效率和系统稳定性。 摘要:企业内部系统集成Acitiviti开源工作流存在的问题: 1. 企业需要单独搭建工作流服务&#xff…

服务器数据恢复—强制上线raid5阵列离线硬盘导致raid不可用的数据恢复案例

服务器数据恢复环境: 某品牌2850服务器中有一组由6块SCSI硬盘组建的raid5磁盘阵列,linux操作系统ext3文件系统。 服务器故障: 服务器运行过程中突然瘫痪。服务器管理员检查阵列后发现raid5阵列中有两块硬盘离线,将其中一块硬盘进行…

2种方法!一键批量下载1688主图、sku图、视频和详情页

最近关于如何一键下载1688主图、sku图、视频和详情页相关的问题被商友们问爆了。店雷达直接上实操教程,建议收藏,不迷路! 方法一:通过选品中心下载 1、在店雷达选品中心(如果想在1688进货的就在1688选品库中选品&…

视频监控管理平台LntonCVS视频汇聚平台充电桩视频监控应用方案

随着新能源汽车的广泛使用,公众对充电设施的安全性和可靠性日益重视。为了提高充电桩的安全管理和站点运营效率,LntonCVS公司推出了一套全面的新能源汽车充电桩视频监控与管理解决方案。 该方案通过安装高分辨率摄像头,对充电桩及其周边区域进…

Python中zip函数的奥秘与运用

Python中zip函数的奥秘与运用 在Python的编程世界中,zip函数如同一把神秘而强大的钥匙,能够开启数据处理的新境界。它的功能看似简单,但深入探究后,你会发现其中蕴含的奥秘与运用之广泛,足以让人惊叹。 四个方面&…

html5实现端午节网站源码

文章目录 1.设计来源1.1 端午首页页面1.2 端午由来页面1.3 端午图集页面1.4 端午活动页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/139524377 ht…

MYTED | TED100篇打卡总结 辅助学习网站使用说明

文章目录 📚背景🐇timeline🐇版本记录🐇产出小结 📚功能说明🐇左侧🐇中间🐇右侧 📚背景 🐇timeline 在一个平常的下午,一次平常的桌面整理&#…

软考对进入事业编的人有帮助吗?

首先肯定的说,软考是可以用来评职称的。 但是, 这取决于你所在公司的性质和工作岗位。 软考全国统一实施后,不再进行计算机技术与软件相应专业和级别的专业技术职务任职资格评审工作。计算机软件资格考试既是职业资格考试,又是…

代理记账公司的标准,理解并遵循业务流程和道德规范

代理记账公司的存在是为了帮助企业管理和报告他们的财务信息,他们为企业的各种交易提供会计服务,并确保企业遵守所有相关的法规和准则,这些公司需要严格地符合一些标准以维持良好的声誉和服务质量。 代理人必须拥有适当的证书和执照&#xff…

硬光敏的程序实现

硬光敏的程序实现通常涉及到使用物理光敏元件,如光敏电阻或光敏二极管,来检测环境光照强度。然后,根据检测到的光照强度来控制其他设备,例如补光灯或摄像头的红外滤镜。以下是一个简化的硬光敏程序实现的示例流程,使用…

迅为RK3562开发板ARM四核A53核心板瑞芯微国产人工智能Linux安卓

iTOP-3562开发板采用瑞芯微RK3562处理器,内部集成了四核A53Mali G52架构,主频2GHZ,内置1TOPSNPU算力,RK809动态调频。支持OpenGLES1.1/2.0/3.2、0penCL2.0、Vulkan 1.1内嵌高性能2D加速硬件。 内置独立NPU, 算力达 1TOPS,可用于轻…

浅谈IDEA中项目如何进行热部署

文章目录 一、什么是热部署?二、配置过程2.1、社区版IDEA2.2、专业版IDEA 一、什么是热部署? 热部署:当代码修改时,IDEA自动帮忙重新加载项目,无需手动加载。 二、配置过程 2.1、社区版IDEA 1、添加热部署框架 &l…

监控易监测对象及指标之:全面监控神通数据库

随着企业信息化建设的不断深入,数据库作为存储和管理核心数据的关键基础设施,其稳定性和性能直接关系到业务的连续性和企业的运营效率。神通数据库作为国产数据库的一种,因其出色的性能和稳定性而受到了广泛关注。 为了确保神通数据库的稳定运…

Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议

一、daemon.json 文件概述 daemon.json是Docker守护进程的配置文件,它允许系统管理员自定义Docker守护程序的行为。此文件通常位于/etc/docker/目录下。通过修改daemon.json,可以调整Docker守护进程的多种设置,包括网络配置、日志记录、存储驱动等。 二、daemon.json 文件结…

PyTorch交叉熵理解

PyTorch 中的交叉熵损失 CrossEntropyLoss PyTorch 中使用CrossEntropyLoss 计算交叉熵损失,常用于分类任务。交叉熵损失衡量了模型输出的概率分布与实际标签分布之间的差异,目标是最小化该损失以优化模型。 我们通过一个具体的案例来详细说明 CrossE…

Unity编辑器扩展-番外篇-Gizmos基础-物体如何在球面上移动

目录 一、本节目标效果展示 二、先画出素材 1.先新建一个普通的代码 2.画素材(一个头,两个耳朵,一个鼻子) a.关于贴心的Unity b.开始画素材 三、了解移动的原理 四、辅助物体的建立 五、画左耳朵 六、全部代码 七、作者的…

Ceph入门到精通-Ceph OSD 磁盘在系统重启后无法识别处理步骤

如果Ceph OSD磁盘在系统重启后无法识别,你可以按照以下步骤进行检查和解决: 1. 检查硬件状态 物理检查:首先进行物理检查,确保磁盘没有物理损坏,数据线和电源线连接正常。S.M.A.R.T状态:使用smartctl命令检查磁盘的S.M.A.R.T状态,以确定是否有硬件问题。2. 确认磁盘识别…

OpenCv之简单的人脸识别项目(特征标注页面)

人脸识别 准备八、特征标注页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件 3.定义两个全局变量4.定义选择图片的函数4.1函数定义和全局变量声明4.2打开文件对话框并获取文件路径4.3处理图片并创建标签4.4显示图像 5.定…

MK米客方德 SD NAND与文件系统:技术解析与应用指南

随着数字存储技术的飞速发展,SD NAND(贴片式T卡)已成为我们日常生活中不可或缺的存储工具。我们将深入探讨SD NAND的文件系统,特别是SD 3.0协议支持的文件系统类型,以及它们在实际应用中的作用和用户可能遇到的问题。 MK米客方德的…

kafka-集群-主题创建

文章目录 1、集群主题创建1.1、查看 efak1.2、创建 主题 my_topic1 并建立6个分区并给每个分区建立3个副本1.2.1、查看 my_topic1 的详细信息 1.3、停止 kafka-01实例,端口号为 9095 1、集群主题创建 1.1、查看 efak 已经有三个kafka实例 1.2、创建 主题 my_topic1…