08_TypeScript 中的类(静态属性、静态方法、抽象类、继承多态)

静态属性、静态方法、抽象类、继承多态

  • 一、静态属性和静态方法
    • 1、回顾ES5中的静态方法
    • 2、TS 中定义静态方法和静态属性
  • 二、多态
    • 1、定义:父类定义一个方法不去实现,让继承它的子类去实现,每一个子类有不同的表现。多态属于继承
  • 三、 抽象方法、抽象类
    • 1、TypeScript 中的抽象类:它是提供其它类继承的基类,不能直接被实例化
    • 2、用 abstract 关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现
    • 3、abstract 抽象方法只能放在抽象类里面
    • 4、抽象类和抽象方法用来定义标准。标准:Animal 这个类要求它的子类必须要包含 eat 方法

一、静态属性和静态方法

1、回顾ES5中的静态方法

function Person(){this.run2 = function () {} //实例方法
}
Person.run = function (){}// 静态方法
Person.name = 'nihao' //静态属性// 静态方法可以直接调用,实例方法需要实例才能使用
Person.run() // 静态方法调用
let p = new Person()
p.run2() //实例方法调用

2、TS 中定义静态方法和静态属性

class Person{public name:stringstatic sex:stringconstructor(name:string) {this.name = name}run(){// 实例方法console.log(this.name + "is running")}work(){console.log(this.name + "is working")}static print(){//静态方法,里面没法直接调用类中的属性,只能调用static 修饰的静态属性console.log("print", Person.sex)}
}
Person.print()//调用静态方法,不需要实例化
let p = new Person('123')
p.run()//调用实例方法,需要实例化

二、多态

1、定义:父类定义一个方法不去实现,让继承它的子类去实现,每一个子类有不同的表现。多态属于继承

class Animal{name:stringconstructor(name:string){this.name = name}eat(){//父类定义一个通用方法,具体吃什么不知道?让继承的子类去实现,每一个子类的表现不一样console.log("eat 的方法")}
}
class Dog extends Animal{constructor(name:string){super(name)}eat() {console.log(this.name + '吃肉')}
}
class Cat extends Animal{constructor(name:string){super(name)}eat() {console.log(this.name + '吃🐟')}
}

三、 抽象方法、抽象类

1、TypeScript 中的抽象类:它是提供其它类继承的基类,不能直接被实例化

2、用 abstract 关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现

3、abstract 抽象方法只能放在抽象类里面

4、抽象类和抽象方法用来定义标准。标准:Animal 这个类要求它的子类必须要包含 eat 方法

abstract class Animal{name:stringconstructor(name:string){this.name = name}eat(){console.log("eat 的方法")}abstract run():any //在子类中必须实现
}
class Dog extends Animal{constructor(name:string){super(name)}eat() {console.log(this.name + '吃肉')}// 抽象类的子类必须要实现抽象类里面的抽象方法run() {console.log("正在奔跑")}
}let dog = new Dog("小狗狗")
dog.run()

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

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

相关文章

Halcon与C++之间的数据转换

HALCON的HTuple类型(元组)功能很强大,可以表示INT、double、string等多种类型数据。当元组中只有一个成员时,HTuple也可表示原子类型 1. haclon -> C //HTuple转int HTuple hTuple 1; int data1 hTuple[0].I(); // data1 1//HTuple转do…

MSSQL Server运维常用SQL命令

1、数据库连接数 select name, state, state_desc from sys.databases; 查询结果: 2、数据库状态 select name, state, state_desc from sys.databases; 查询结果: 3、数据文件状态 select a.name, b.physical_name, b.state, b.state_desc from sy…

TCP连接如何确保可靠性

TCP通过序列号、确认应答、超时重传、数据校验、流量控制、拥塞控制等机制,确保了数据传输的可靠性和效率。 序列号:每个TCP段都有一个序列号,代表了数据流中的字节位置。 通过序列号,接收方可以检测数据包是否丢失或重复&#…

03MFC画笔/画刷/画椭圆/圆/(延时)文字

文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本

【图像】图像识别经典算法

图像识别经典算法 一、图像识别基础二、经典图像识别算法1. Haar-like Features AdaBoost (Viola-Jones)2. SIFT (Scale-Invariant Feature Transform)3. SURF (Speeded-Up Robust Features)4. HOG (Histogram of Oriented Gradients)5. CNN (Convolutional Neural Networks) …

尚品汇-(十六)

目录 商品详情功能开发 (1)搭建service-item (2)获取sku基本信息与图片信息 (3)获取分类信息(查看三级分类) 商品详情功能开发 (1)搭建service-item 点…

「UCD」浅谈蓝湖Figma交互设计对齐

在现代数字产品的设计和开发过程中,选择合适的工具对于提高团队效率和保证产品质量至关重要。本文将从开发和设计两个不同的角度,探讨蓝湖和Figma两款流行工具的优势与不足,并提出结论和建议。 开发研发视角:蓝湖 优点: 清晰的设计规范:蓝湖为开发工程师提供了清晰的设计…

Gradio:快速构建机器学习Web应用的神奇工具

文章目录 引言官网链接原理基础使用安装 Gradio创建一个简单的 Gradio 应用 高级使用自定义界面集成到现有Web应用中 优缺点优点缺点 总结 引言 Gradio 是一个基于 Python 的库,它极大地简化了将机器学习模型转化为交互式Web应用的过程。无需深入了解Web开发或后端…

状态管理的艺术:探索Flutter的Provider库

状态管理的艺术:探索Flutter的Provider库 前言 上一篇文章中,我们详细介绍了 Flutter 应用中的状态管理,以及 StatefulWidget 和 setState 的使用。 本篇我们继续介绍另一个实现状态管理的方式:Provider。 Provider优缺点 基…

【阶乘】个人练习-Leetcode-LCP 22. 黑白方格画

题目链接:https://leetcode.cn/problems/ccw6C7/description/ 题目大意:给出一块白方格面积为n*n,给出一个数字k,每一次操作可以把方格的某一整行或者某一整列涂黑,求使得黑色格子数字为k的【最终图案】的个数。 思路…

MySQL 分库分表

分表 分表 将表按照某种规则拆分成多个表。 分表的使用原因 当数据量超大的时候,B-Tree索引效果很变差。 垂直分区 切分原则:把不常用或存储内容比较多的字段分到新的表中可使表存储更多数据。 原因,Innodb主索引叶子节点存储着当前行的所有信…

Linux抽象套接字

在UNIX和类UNIX系统中,socket编程提供了一种机制,允许进程之间进行通信。其中,UNIX域套接字(UNIX domain socket)是一种特殊的套接字,用于同一台机器上的进程间通信(IPC)。UNIX域套接字可以使用两种类型的地址:路径名套接字(pathname socket)和抽象套接字(abstract…

笔记 2 : 课本第 3 章开始,记录 arm 的汇编指令的格式

(13) 介绍 arm 中的第一个汇编指令的用法 mov : (14)立即数的概念: (15) 汇编中的移位写法: 举例 : (16) 学习一个新的指令 cmp &a…

网络监控工具推荐与对比

网络监控工具在确保网络安全、性能和可用性方面发挥着关键作用。以下是几款流行的网络监控工具的推荐与对比: 1. Nagios 特点: 开放源代码:提供免费的社区版本和付费的企业版本。可扩展性:拥有大量插件,可以监控各种…

芯课堂 | Synwit_UI_Creator(ugui)平台之PC端界面设计篇

​今天小编给大家介绍的是华芯微特面向小尺寸TFT-LCD屏驱市场量身打造的Synwit_UI_Creator(ugui)自研开发套件。 UI_Creator(ugui)开发套件分为上位机和下位机,以下如无特指,上位机即为PC端设计器/仿真器&…

虚拟机及其Debian(kali)安装

本机电脑为Windows10系统专业版,在此基础上安装VMware和系统(Kali) 步骤如下 一、安装 VMware Workstation Pro v16.2.4 安装步骤可参照网上博客,该步骤较简单,此处不做讲解。文件中共计两个,其中一个是激活…

【闲聊】-Perl的基础语法

Perl语言详细介绍 概述 Perl,全称“Practical Extraction and Report Language”,是一种功能强大的编程语言,特别擅长文本处理和系统自动化任务。它最初由Larry Wall于1987年设计,旨在解决UNIX系统管理中的常见问题,…

拆分整数 java

拆分整数 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2输出: 1解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10输出: 36解释: 10 3 …

关于不同集合类型是否重写equals和hashCode的问题

不同集合类型在没有重写 equals 和 hashCode 时的行为: HashSet 和 HashMap: 这些集合依赖于对象的 hashCode 方法来定位元素,然后使用 equals 方法来确认元素是否真的相等。 如果你没有重写 equals 和 hashCode,那么默认的 equals 方法将基…

【ProtoBuf】在 Windows / Linux 安装 ProtoBuf(超详细教程)

一、ProtoBuf 在 Window 下的安装 1、下载 ProtoBuf 编译器 下载地址:github.com 可以不用下载最新版本,具体的下载根据自己电脑情况选择。 下载之后将压缩包解压到本地目录下。解压后的文件内包含 bin、include 文件,以及一个 readme.txt…