【TS】类(class)学习

类(class)基础概念

  • 类定义:学习如何定义一个类,包括类的属性和方法。
  • 构造函数:理解构造函数的作用和如何使用它来初始化对象。
  • 访问修饰符:学习 public、private 和 protected 修饰符,以及它们如何控制属性和方法的访问权限。
  • 继承:理解如何通过继承来扩展类,以及如何使用 super 关键字调用父类的方法和构造函数。
  • 静态属性和方法:学习如何定义和使用静态属性和方法,这些属性和方法不属于类的实例,而是属于类本身。

类示例

类的结构
class 类名 {属性名: 类型;constructor(参数: 类型){this.属性名 = 参数;}方法名(){....}}
一个简单的类
class Person{name: string;age: number;constructor(name: string, age: number){this.name = name;this.age = age;}speakHello(){console.log(`Hello my name is : ${this.name}`);}
}

类的使用

const sanfeng = new Person('张三丰', 108);
sanfeng .speakHello();
类的继承
class Man extends Person{constructor(name: string, age: number){super(name, age);this.name = name; }
}const cuishan= new Man('张翠山', 28);
cuishan.speakHello();

属性具有三种修饰符

  • public(默认值),可以在类、子类和对象中修改

  • protected ,可以在类、子类中修改

  • private ,可以在类中修改

class Person{private name: string;private age: number;constructor(name: string, age: number){this.name = name; this.age = age;}speakHello(){console.log(`hello my name is : ${this.name}`);}
}class Man extends Person{constructor(name: string, age: number){super(name, age);this.name = name; }
}const  person = new Person('张三丰', 108);// private和protected修饰的属性不能修改,pulich可以
person .name = '张无忌';

类的封装

对于一些不希望被任意修改的属性,可以将其设置为private,直接将其设置为private将导致无法再通过对象修改其中的属性,可以在类中定义一组读取、设置属性的方法, 读取属性的方法叫做setter方法,设置属性的方法叫做getter方法。

class Person{private _name: string;constructor(name: string){this._name = name;}get name(){return this._name;}set name(name: string){this._name = name;}}const person= new Person('张无忌');// 通过getter读取name属性
console.log(person.name);// 通过setter修改name属性
person.name = '增阿牛'; 
console.log(person.name);

抽象类(abstract class)

抽象类是专门用来被其他类所继承的类,它只能被其他类所继承不能用来创建实例。

使用abstract开头的方法叫做抽象方法,抽象方法没有方法体只能定义在抽象类中,继承抽象类时抽象方法必须要实现

abstract class Person{/*** 练功夫*/abstract doKungKu(): void;speak(){console.log('我在练习狮吼功');}
}class Man extends Person{doKungKu(){console.log('我在练习七伤拳');}}




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

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

相关文章

elasticsearch文档Delete By Query API(一)

这里的查询需要使用和Search API(后文会讲)相同的方式来将查询条件作为query的值传递,当然也可以使用q关键字,例如如下请求: curl -X POST “localhost:9200/twitter/_delete_by_query?pretty&quser:kimchy” -H…

react购物车Redux

入口index.js import React from react import {createRoot} from react-dom/clientimport App from ./App //注入store import {Provider} from "react-redux"; import store from "./store";const root createRoot(document.getElementById(root)) roo…

9/3作业

一、继承(inhert) 面向对象三大特征:封装、继承、多态 继承:所谓继承,是类与类之间的关系。就是基于一个已有的类,来创建出一个新类的过程叫做继承。主要提高代码的复用性。 1.1 继承的作用 1> 实现…

基于mediamtx+ffmpeg实现视频推流,基于python-deffcode实现视频拉流

软件依赖:mediamtx、ffmpeg python包依赖:deffcode mediamtx下载地址:https://github.com/bluenviron/mediamtx/releases ffmeg下载地址:https://ffmpeg.org/download.html deffcode安装命令:pip install deffcode 1、…

爬虫练习(猫眼电影解密)

问题 随便拿一篇电影做样例。我们发现猫眼的页面数据在预览窗口中全是小方框。在当我们拿到源码以后,数据全是加密后的。所以我们需要想办法破解加密,拿到数据。 破解过程 1.源码获取问题与破解 分析 在我们刚刚请求url的时候是可以得到数据的&#xff…

Shadow Dom 是什么

概念 官方:https://developer.mozilla.org/zh-CN/docs/Web/API/Web_components/Using_shadow_DOM 核心:影子 DOM(Shadow DOM)允许你将一个 DOM 树附加到一个元素上,并且使该树的内部对于在页面中运行的 JavaScript 和…

Proxyless的多活流量和微服务治理

1. 引言 1.1 项目的背景及意义 在当今的微服务架构中,应用程序通常被拆分成多个独立的服务,这些服务通过网络进行通信。这种架构的优势在于可以提高系统的可扩展性和灵活性,但也带来了新的挑战,比如: 服务间通信的复…

合碳智能 × Milvus:探索化学合成新境界——逆合成路线设计

合碳智能(C12.ai)成立于2022年,致力于运用AI和具身智能技术,为药物研发实验室提供新一代智能化解决方案,推动实验室从自动化迈向智能化,突破传统实验模式与人员的依赖,解决效率和成本的瓶颈&…

电脑错误mfc140.dll丢失怎么办?mfc140.dll丢失如何修复?

在使用基于Microsoft Visual Studio 2015开发的应用程序时,可能会遇到个别组件影响整体功能的情况,其中“mfc140.dll丢失”错误就是常见的一个技术障碍。这个DLL文件属于Microsoft Foundation Class (MFC) Library,它对Windows应用程序的运行…

MySQL record

更改密码: alter user rootlocalhost identified with mysql_native_password by ‘123456’; 注意: 在命令行方式下,每条MySQL的命令都是以分号结尾的,如果不加分号,MySQL会继续等待用户输入命令,直到MyS…

【C++】STL—vector的使用

目录 前言vector的常见构造迭代器的使用vector空间增长问题vector的增删查改尾插和尾删findinsert和erase 前言 vector是表示可变大小数组的序列容器。它就像数组一样,采用连续的存储空间来存储元素,且它的大小可以动态改变。并且vector在访问元素时也非…

AI语音机器人:通过 Azure Speech 实现类人类的交互

语音对话的重要性 在竞争日益激烈的客户互动领域,人工智能语音对话正成为重中之重。随着数字参与者的崛起,组织认识到语音机器人的强大力量,它是一种自然而直观的沟通方式,可以提供类似人类的体验,深度吸引用户&#…

jmeter中上传文件接口,当文件名为中文时出现乱码

1、在jmeter5.1.1中配置上传文件接口,当上传的文件为中文名称时,文件名称会显示乱码如图 2、解决方案是需要更换jmeter/lib/ext文件中的ApacheJMeter_http.jar 包 3、更换jar包经过多次实验,发现有的上传文件接口中文名正常,但是有…

负载均衡--资源申请说明(三)

1.负载方式:分为四层负载和七层负载 2.负载协议:四层负载为TCP和UDP,七层负载为HTTP和HTTPS 4.负载端口:填写虚地址的端口(一般与后端服务端口保持一致) 5.真实服务IP:指被负载的后台真实服务…

从零开始:理解并实践Prompt Flow

在人工智能领域中,代码先行与模型紧密结合的Prompt Flow逐渐成为开发者关注的新焦点。今天,我们将共同探索如何快速启动Prompt Flow项目,深入了解流(flow)的概念,并学习如何使用VS Code Extension或YAML来编…

基于Python的机器学习系列(26):PyTorch中的梯度计算

在本篇中,我们将探讨PyTorch的autograd功能,它为张量操作提供自动微分。我们将学习如何使用torch.autograd工具计算梯度并进行反向传播。 自动微分(Autograd) PyTorch的autograd包自动计算张量的梯度。当一个张量的.requires_gra…

C++和Python混合编程——C++调用Python入门

大纲 代码结构初始化 Python 解释器获取 GIL为什么需要 GIL?GIL 的影响 导入 Python 模块并执行代码释放 GIL终止 Python 解释器 完整代码编译执行结果项目地址 在《C和Python混合编程——Python调用C入门》一文中,我们熟悉了Python调用C编译的动态库的方…

集成电路学习:什么是PWM脉冲宽度调制

一、PWM:脉冲宽度调制 PWM,全称为脉冲宽度调制(Pulse Width Modulation),是一种通过调整脉冲信号的宽度来控制电路输出的技术。在PWM中,信号的输出由一系列等幅值的脉冲组成,这些脉冲的宽度根据…

上海亚商投顾:深成指、创业板指均涨超1%,华为产业链反复活跃

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 大小指数昨日走势分化,沪指全天震荡调整,2800点失而复得,深成指、创业板指…

golang

一.go执行流程 4)go run运行时间明显要比第一种时间长一点 【3】编译后的文件可以替换名称 二.语法注意 1.源文件以“go”为扩展名 2.程序的执行入口是main()函数。 3.严格区分大小写 4.方法由一条条语句构成,每个语句后不需…