上一篇

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类的继承相关推荐

  1. 站在Java的角度看LinkedList

    站在Java的角度看,玩队列不就是玩对象引用对象嘛! public class LinkedList<E> implements List<E>, Deque<E> ...

  2. 站在汽修厂的角度看需求

    站在汽修厂的角度看我的需求 进货 销货 存货 门店管理 客户管理 财务管理 多仓库,多货位

  3. 站在招聘者角度看面试 | 掘金技术征文

    背景 本文主要介绍我在日常中怎么去招人,面试人,关注点是什么,以及怎么找到合适自己团队的人才. 我目前任职一家大数据小公司,负责前端团队,由于业务的扩展需要很多技术人员,站在一个招聘者的角度去看待面试 ...

  4. 【C语言】站在数组的角度看指针

    哈喽大家好,我是保护小周ღ,C语言,接下来给大家带来的是深入理解数组和指针--数组元素的访问,这篇主要讲的是基础指针和数组的相关知识,是博主的所见所闻,细节上的知识后面会这里面没有提,会放在后期的文章 ...

  5. 从jvm角度看懂类初始化、方法重写、重载。

    类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期.如下图 类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段.我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试 ...

  6. 如何理解站在CPU角度和站在NOR FLASH角度对NOR FLASH进行操作

    前言: 我觉得,用s3c2440对NOR FLASH进行操作,在代码编写上没什么特别的难度,主要是NOR FLASH说明书的理解,还有根据代码整理一下如何理解站在CPU角度和站在NOR FLASH角度 ...

  7. 望尽天涯路之从理财角度看高可用

    王国维 在<人间词话>里谈到了治学经验,他说:古今之成大事业.大学问者,必经过三种之境界: 第一种境界 昨夜西风凋碧树.独上高楼,望尽天涯路. 第二种境界 衣带渐宽终不悔,为伊消得人憔悴. ...

  8. 望尽天涯路--从理财角度看高可用

    王国维 在<人间词话>里谈到了治学经验,他说:古今之成大事业.大学问者,必经过三种之境界: 第一种境界 昨夜西风凋碧树.独上高楼,望尽天涯路. 第二种境界 衣带渐宽终不悔,为伊消得人憔悴. ...

  9. 站在公司和员工的角度看实习员工

    刚刚看了@nnnjquy的开始工作如何被重视?写出了一些实习生在刚实习的是应注意的一些事项,本人就联想到实习员工了,有感写一些感受吧.     员工和公司两者在合作的背后充满了很多的矛盾,员工已经做了 ...

  10. 跳出横向的、孤立的牵绊,真正站在新的角度来看待Web3.0

    对于Web3.0依然是一个入口的定义,其实在无形当中建构了一堵高墙,将Web3.0分成了内外两个世界.尽管在Web3.0以内,我们的确可以享受到以区块链为代表的新技术所带来的全新的生活,但是,Web3 ...

最新文章

  1. 嵌入式系统linux之光标隐藏解决
  2. 人工智能时代,怎样高效关注行业趋势、了解AI技术与落地?
  3. python编程语言一览_编程语言学习:python有趣用法汇总
  4. 41、java应用占用cpu过高原因分析
  5. [css] 举例说明attr()的使用场景
  6. python 白色怎么表示_python – 如何使用pil使用白色背景(透明?)的round_corner标识?...
  7. pandas 替换 某列大于_Pandas使用总结
  8. Java基础学习总结(74)——Java常见笔试题及答案汇总
  9. 深度学习_目标检测 R-CNN 论文笔记
  10. 前端笔记 | CSS进阶
  11. Android中Text文本特效处理
  12. Warshall算法求传递闭包
  13. 安装mysql中error nr.1045_windows10安装mysql提示error Nr.1045的解决方法
  14. VPS搭建HTTP代理
  15. 怎么隐藏计算机磁盘分区,如何隐藏硬盘分区 隐藏磁盘分区
  16. python爬虫之入门级实战实例(东方财富人气top100、汉服荟视频下载)
  17. 关于dva框架的二三事
  18. c语言题库16页,C语言题库(完整版)(16页)-原创力文档
  19. 春季养肝正当时 教你做杏仁露
  20. Python量化——条件选股实现1

热门文章

  1. 逆火效应:该对谁负责?
  2. 【Pigeon源码阅读】服务注册发布流程(四)
  3. C#支付宝扫码支付代码完整版(转)
  4. erdas裁剪影像_ERDAS遥感图像的分幅裁剪
  5. shell编程阶段性总结+几个shell脚本实例
  6. 应届生面试应答需要注意哪些事项及技巧?
  7. window.onload=function()是什么意思
  8. 微软bi报表服务器,什么是 Power BI 报表服务器?
  9. blowfish算法c语言,blowfish-c源代码(简陋).doc
  10. Shel相关编程(四)