7.0 站在生物学的角度看TypeScript类的继承
上一篇
5.0 TypeScript 类的构造函数_十一月丶萧邦的博客-CSDN博客
首先,我们先来看看为什么需要继承?首先来看一段代码
// Dog类class Dog {name: string;age: number;constructor(name: string, age: number) {this.name = namethis.age = age}say(): void {console.log('旺旺旺')}}// Cat类class Cat {name: string;age: number;constructor(name: string, age: number) {this.name = namethis.age = age}say(): void {console.log('喵喵喵')}}const dog = new Dog('陈贝拉', 8)console.log(dog)dog.say()const cat = new Cat('陈多拉', 1)console.log(cat)cat.say()
代码输出:
看起来,一切都是那么的风平浪静,没有什么问题,但是我们会看到,Dog类和Cat类中都包含name,age属性,say方法,两个类,这么点属性还好,如果再让写很多很多类,类中都包含着这些个属性方法,那我们岂不是要进行CV大法了。。。代码看起来也费劲,所以继承就出现了!
要理解继承的概念啊,我先来引入一张百度找到的图!从站在生物学的角度来看,恐龙的进化图!
咱们可以把每个恐龙都当成是一个类,从图上来看,所有的类都是源自于始盗龙类,最后剑龙类里面一定包含着最开始的始盗龙的一些基因数据,这就是继承啦!上方的代码缺的是什么?缺的不就是最开始的那个始盗龙的类吗?于是乎代码改写:创建一个Animal类
class Animal {name: stringage: numberconstructor(name: string, age: number) {this.name = namethis.age = age}say(): void {console.log('小动物在嗷呜')}}// extends:英文代表扩展的意思,在这里就作为继承的关键字了// Dog类继承了Animal类class Dog extends Animal {}// Cat类继承了Animal类class Cat extends Animal {}const dog = new Dog('陈贝拉', 8)console.log(dog)dog.say()const cat = new Cat('陈多拉', 1)console.log(cat)cat.say()
代码输出
这样写出来的代码是不是看着简化了很多,但是问题又来了,我们想要的是狗子 是旺旺旺,小猫是喵喵喵,现在都成小动物在嗷呜了。。。继续改吧,
通过对say方法进行传值,我们得到了我们想要的
say(str: string): void {console.log(str)
}
dog.say('旺旺旺')
cat.say('喵喵喵')
问题又来了,狗子不但会旺旺旺,还会看家护院,我需要赋予Dog这个类看家护院的方法,至于猫呢,我想让它say的时候,说:喵喵喵喵喵喵喵喵,
class Dog extends Animal {// 添加新的方法lookHouse(): void {console.log(`${this.name}可以看家护院!`)}}class Cat extends Animal {// 当子类的方法与父类的方法一致时,子类的方法会覆盖掉父类的方法,以子类的方法为准say(): void {console.log('喵喵喵喵喵喵喵喵')}}dog.say('旺旺旺')dog.lookHouse()console.log(cat)cat.say()
那么我们就可以总结一些结论:
通过继承可以将多个类中共有的代码写在一个父类之中;
在使用继承后,子类将会拥有父类所有的方法属性;
如果我们希望在子类中增加单独的属性方法,那么直接添加即可;
如果在子类中添加了和父类相同的方法,则子类的方法会覆盖掉父类的方法,这种做法我们称之为方法重写
完整代码:
class Animal {name: stringage: numberconstructor(name: string, age: number) {this.name = namethis.age = age}say(str: string): void {console.log(str)}}// Dog类继承了Animal类class Dog extends Animal {lookHouse(): void {console.log(`${this.name}可以看家护院!`)}}// Cat类继承了Animal类class Cat extends Animal {say(): void {console.log('喵喵喵喵喵喵喵喵')}}const dog = new Dog('陈贝拉', 8)console.log(dog)dog.say('旺旺旺')dog.lookHouse()const cat = new Cat('陈多拉', 1)console.log(cat)cat.say()
7.0 站在生物学的角度看TypeScript类的继承相关推荐
- 站在Java的角度看LinkedList
站在Java的角度看,玩队列不就是玩对象引用对象嘛! public class LinkedList<E> implements List<E>, Deque<E> ...
- 站在汽修厂的角度看需求
站在汽修厂的角度看我的需求 进货 销货 存货 门店管理 客户管理 财务管理 多仓库,多货位
- 站在招聘者角度看面试 | 掘金技术征文
背景 本文主要介绍我在日常中怎么去招人,面试人,关注点是什么,以及怎么找到合适自己团队的人才. 我目前任职一家大数据小公司,负责前端团队,由于业务的扩展需要很多技术人员,站在一个招聘者的角度去看待面试 ...
- 【C语言】站在数组的角度看指针
哈喽大家好,我是保护小周ღ,C语言,接下来给大家带来的是深入理解数组和指针--数组元素的访问,这篇主要讲的是基础指针和数组的相关知识,是博主的所见所闻,细节上的知识后面会这里面没有提,会放在后期的文章 ...
- 从jvm角度看懂类初始化、方法重写、重载。
类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期.如下图 类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段.我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试 ...
- 如何理解站在CPU角度和站在NOR FLASH角度对NOR FLASH进行操作
前言: 我觉得,用s3c2440对NOR FLASH进行操作,在代码编写上没什么特别的难度,主要是NOR FLASH说明书的理解,还有根据代码整理一下如何理解站在CPU角度和站在NOR FLASH角度 ...
- 望尽天涯路之从理财角度看高可用
王国维 在<人间词话>里谈到了治学经验,他说:古今之成大事业.大学问者,必经过三种之境界: 第一种境界 昨夜西风凋碧树.独上高楼,望尽天涯路. 第二种境界 衣带渐宽终不悔,为伊消得人憔悴. ...
- 望尽天涯路--从理财角度看高可用
王国维 在<人间词话>里谈到了治学经验,他说:古今之成大事业.大学问者,必经过三种之境界: 第一种境界 昨夜西风凋碧树.独上高楼,望尽天涯路. 第二种境界 衣带渐宽终不悔,为伊消得人憔悴. ...
- 站在公司和员工的角度看实习员工
刚刚看了@nnnjquy的开始工作如何被重视?写出了一些实习生在刚实习的是应注意的一些事项,本人就联想到实习员工了,有感写一些感受吧. 员工和公司两者在合作的背后充满了很多的矛盾,员工已经做了 ...
- 跳出横向的、孤立的牵绊,真正站在新的角度来看待Web3.0
对于Web3.0依然是一个入口的定义,其实在无形当中建构了一堵高墙,将Web3.0分成了内外两个世界.尽管在Web3.0以内,我们的确可以享受到以区块链为代表的新技术所带来的全新的生活,但是,Web3 ...
最新文章
- 嵌入式系统linux之光标隐藏解决
- 人工智能时代,怎样高效关注行业趋势、了解AI技术与落地?
- python编程语言一览_编程语言学习:python有趣用法汇总
- 41、java应用占用cpu过高原因分析
- [css] 举例说明attr()的使用场景
- python 白色怎么表示_python – 如何使用pil使用白色背景(透明?)的round_corner标识?...
- pandas 替换 某列大于_Pandas使用总结
- Java基础学习总结(74)——Java常见笔试题及答案汇总
- 深度学习_目标检测 R-CNN 论文笔记
- 前端笔记 | CSS进阶
- Android中Text文本特效处理
- Warshall算法求传递闭包
- 安装mysql中error nr.1045_windows10安装mysql提示error Nr.1045的解决方法
- VPS搭建HTTP代理
- 怎么隐藏计算机磁盘分区,如何隐藏硬盘分区 隐藏磁盘分区
- python爬虫之入门级实战实例(东方财富人气top100、汉服荟视频下载)
- 关于dva框架的二三事
- c语言题库16页,C语言题库(完整版)(16页)-原创力文档
- 春季养肝正当时 教你做杏仁露
- Python量化——条件选股实现1
热门文章
- 逆火效应:该对谁负责?
- 【Pigeon源码阅读】服务注册发布流程(四)
- C#支付宝扫码支付代码完整版(转)
- erdas裁剪影像_ERDAS遥感图像的分幅裁剪
- shell编程阶段性总结+几个shell脚本实例
- 应届生面试应答需要注意哪些事项及技巧?
- window.onload=function()是什么意思
- 微软bi报表服务器,什么是 Power BI 报表服务器?
- blowfish算法c语言,blowfish-c源代码(简陋).doc
- Shel相关编程(四)