TS学习-类的继承

目录

    • 1,继承的作用
    • 2,成员的重写 Override
    • 3,类型匹配(兼容性)
    • 4,修饰符
    • 5,单根性和传递性

接这篇文章 TS学习-类

1,继承的作用

继承可以描述类与类之间的关系。
如果A和B都是类,并且可以描述为A是B,则A和B形成继承关系。

  • B是父类,A是子类
  • B派生A,A继承自B
  • B是A的基类,A是B的派生类
    A(男人女人小孩老人)都是B(人)。

如果A继承自B,则A中自动拥有B中所有的成员。

class People {name: string = "";age: number = 1;sayHello() {console.log(`我是${this.name}`);}
}class Man extends People {}const man = new Man();
console.log(man); // 拥有 People 类的所有成员。

2,成员的重写 Override

指在子类中覆盖父类的成员。

  • 不能改变父类成员的类型。
  • 对方法,参数的数量和类型得保持一致。

有一种情况,如果父类的方法没有参数,但有的子类需要传参。解决办法:

  • 将参数作为子类的成员属性,这样子类就不用传参了。
  • 或者去掉父类中的方法,因为子类之间方法实现差距过大时,不应该放在父类作为公共方法了。

如果方法重写了,通过 this 调用的是子类重写后的方法,通过 super 调用的是父类的方法。
没有重写,则 this 和 super 效果一样,都是调用父类的方法。

3,类型匹配(兼容性)

鸭子分辨法。
子类的对象,始终可以用父类做约束。在面向对象中,这种情况被称为里氏替换原则。
子类的成员对象肯定是 ≥ 父类的。

class People {name: string = "";public age: number = 1;sayHello() {console.log(`我是${this.name}`);}
}class Man extends People {color: string = 'yellow'
}const man:People = new Man();

但是,通过父类约束时,实例对象只能使用父类中有的成员,无法直接使用子类中新增的成员。如果要使用,需要先判断实例对象的类型,通过instanceof:

const man:People = new Man();
if (man instanceof Man) {console.log(man.color);
}

4,修饰符

  • public修饰符(默认),子类和实例对象都可以使用。
  • protected修饰符,子类可使用,实例对象无法使用。
  • private修饰符,子类和实例对象都无法使用。

5,单根性和传递性

单根性:每个类最多只能用于一个父类。
传递性:如果A是B的父类,并且B是C的父类,则A也是C的父类。

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

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

相关文章

MySQL数据库及数据表的创建

1.创建一个名叫 db_classes 的数据库: 创建一个叫 db_classes 的数据库MySQL命令: create database db_classes; 运行效果: 创建数据库后查看该数据库基本信息MySQL命令: show create database db_classes; 运行效果&#xff…

力扣刷题--数组--第三天

今天再做两道二分查找的题目,关于二分查找的知识可看我前两篇博客。话不多说,直接开干! 题目1:69.x 的平方根 题目详情:   给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数&#…

VScode通过ssh远程连接服务器被拒绝:permission denied, please try again

使用场景: 使用windows系统下的vscode远程连接服务器的linux系统,终端提示permission denied, please try again,但是使用cmd是可以远程登录的。 解决办法: 前提条件windows端的vscode安装了ssh远程连接的相关插件Remote - SSH,…

Docker部署Sentinel修改密码

创建Docker容器 docker run -d --name sentinel --restartalways -p 8858:8858 bladex/sentinel-dashboard进入容器 docker exec -it sentinel bash在app.jar所在目录创建application.properties配置文件添加账号密码 auth.usernamesentinel auth.passwordsentinel重启容器 …

Django之rest_framework(六)

一、GenericViewSet类的使用 继承自GenericAPIView,作用也与GenericAPIVIew类似,提供了get_object、get_queryset等方法便于视图的开发 1.1、代码 from rest_framework.viewsets import GenericViewSet from rest_framework.response import Response from rest_framework …

C++基础-编程练习题和答案

文章目录 一、查找插入有序数组的位置二、最高分三、不与最大数相同的数字之和四、最大值和最小值的差五、数字放大六、多余的数七、数字接力八、幸运大抽奖 一、查找插入有序数组的位置 【试题描述】 给你 m 个已经从小到大排好序的整数, 输入一个数 x&#xff0c…

浏览器开发者工具,控制台里读取指定网页节点内容,并保存到文件里

在网页控制台console里,读取body > div.bj-eee > div > div.layout-left > div.topic > div.clearfix.top-hd > div.select-left.pull-left.options-w 中的内容 // 使用querySelector选择单个元素 var element document.querySelector(body &…

Duplicate File Finder Pro for Mac激活版:重复文件清理软件

在繁杂的文件管理中,你是否曾为重复文件而烦恼?Duplicate File Finder Pro for Mac,正是你不可或缺的得力助手。这款专业级工具,能够迅速扫描并定位Mac系统中的重复文件,让你的存储空间恢复清爽。 通过强大的算法支持&…

[C/C++] -- 代理模式

代理模式是一种结构型设计模式,允许一个对象(代理)控制另一个对象的访问。代理对象通常充当客户端和实际目标对象之间的中间人,从而控制对目标对象的访问,可以在访问前后进行一些额外的处理。 代理模式的优点包括&…

机器视觉_联合编程(二)

链接相机,加载tb,检测 FrameGrabber链接相机拍照 using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tas…

《铁路出行更便捷:火车票预定审批系统的设计与应用》

在现代化的铁路交通管理中,火车票预定审批系统扮演着至关重要的角色。它不仅能够有效管理员工出差、培训等需要乘坐火车的行程,还能够提高审批效率,减少人力成本,确保出行安全。本文将探讨火车票预定审批系统的设计原则和应用场景…

AI大模型系列:编写高质量提示(prompt)的实践技巧

AI大模型系列专栏 文章收录于AI大模型系列专栏 文明基石,文字与数字的起源与演变自然语言处理,从规则到统计的演变AI魔法师,提示工程的力量编写高质量提示(prompt)的小技巧 编写高质量提示(prompt&#x…

图片压缩和尺寸调节工具@图像压缩@分辨率调节@降低图片文件体积和磁盘占用

文章目录 abstract降低图片文件大小的方式相关原理 跨平台免费的压缩工具离线运行的软件在线工具👺windows 系统上的压缩方法windows 照片程序(photo)powertoys image-resizer(分辨率/尺寸调整) windows mspaint(画图工具调整分辨率) abstract 提到图片压缩时&#…

一款支持几分钟视频生成,免费无限制AI视频生成网站

前言 AI可以生成原创中视频了! 不是4秒,而是最长达6分钟,官方名为白日梦,将白日梦变成现实! 他不是简单的文生图/图生视频 而是将文生图、图生视频、配音字幕、后期剪辑等,打包封装成一条AI视频生产工作…

Axure PR 10 下拉三级菜单设计图

在线预览地址:Untitled Document 程序员必备资源网站:天梦星服务平台 (tmxkj.top) 需要源码设计图联系我wx:19948765606,3块钱拿走

C++面向对象学习笔记三

本文学习大佬的文章,所摘录和整理的一些知识《C面向对象程序设计》✍千处细节、万字总结(建议收藏)_c面向对象程序设计千处细节-CSDN博客 文章目录 文章目录 前言 正文 const修饰符 void型指针 内联函数 带有默认参数值的函数 new和delete运…

Maven+Junit5 + Allure +Jenkins 搭建 UI 自动化测试实战

文章目录 效果展示Junit 5Junit 5 介绍Junit 5 与 Junit 4 对比PageFactory 模式编写自动化代码公共方法提取测试用例参数化Jenkins 搭建及配置参数化执行生成 Allure 报告Maven 常用命令介绍POM 文件效果展示 本 chat 介绍 UI 自动化测试框架的搭建: 运用 page factory 模式…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《基于V2G潜力模糊评估与移动储能协调调度的灾后供电恢复策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

第12章 软件测试基础(第三部分)测试类型、测试工具

七、测试类型(按工程阶段划分) 单集系确收 (一)单元测试 1、单元测试/模块测试 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。主要依据是模块的详细设计文档。价值在于尽早发现…

spring模块(六)spring监听器(1)ApplicationListener

一、介绍 1、简介 当某个事件触发的时候,就会执行的方法块。 当然,springboot很贴心地提供了一个 EventListener 注解来实现监听。 2、源码: package org.springframework.context;import java.util.EventListener; import java.util.fu…