ts(typescript)面向对象之类的继承

简介: super当作属性使用的时候, super 指向的是父类的原型,因此super无法拿到父类的实例属性,只能拿到父类的public和protected的方法,super 如果当方法使用的话,只能在字类的构造函数中并且是第一行使用,需要使用super()来实例化父类里面的属性,确保字类可以获取父类的成员。

类继承的作用


继承可以描述类与类之间的关系,

例如: 在斗地主的小游戏中,我们只看牌,牌里面有分4种花色的牌(除了大小王),♥,♠,♦,♣,我们可以知道♥的牌是牌,♠的牌是牌……,形如:在中文的描述种,什么是什么,例如 A 是 B,我们就可以理解成 A 是 B的子集(数学角度上)B 包含 A


在程序编程思想中,如果A和B都是类,并且可以描述为A是B,则A和B形成继承关系:


  • B是父类,A是子类
  • B派生A,A继承自B
  • B是A的基类,A是B的派生类


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


image.png



属性继承:获取父类牌的花色,这是一个父类的属性,字类可以直接拿到


20210123095748361.png


方法继承:假设牌都有一个方法叫做来摸我(瞎说的哈),这个方法应该是属于玩家类的行为,用于理解继承父类后,属性和方法也被同时继承。


20210123100121262.png


成员重写


重写(override):子类中覆盖父类的成员,


20210123100708293.png


注意


  • 子类成员不能改变父类成员的类型


20210123101126745.png


  • 无论是属性还是方法,子类都可以对父类的相应成员进行重写,但是重写时,需要保证类型的匹配。


2021012310221579.png


但是有一点,如果我们字类和父类的参数保持一致,但是如果父类的返回值类型是void,字类可以随便定义返回值类型。如下:


20210123110657351.png


原因:


20210123110730828.png


  • 注意this关键字:在继承关系中,this的指向是动态——调用方法时,根据具体的调用者确定this指向;


20210123113240737.png


  • super关键字:在子类的方法中,可以使用super关键字读取父类成员(这个成员是指父类的方法,不能获取父类的属性)


2021012312454784.png


this 和 super 的区别( 在子类中)


1.如果方法或者属性没有进行重写,那么this 和 super 是一样的。


2.如果方法进行重写:

。this 指向的是当前子类的实例,而super指向的是父类

。super当作属性使用的时候, super 指向的是父类的原型,因此super无法拿到父类的实例属性,只能拿到父类的public和protected的方法,super 如果当方法使用的话,只能在字类的构造函数中并且是第一行使用,需要使用super()来实例化父类里面的属性,确保字类可以获取父类的成员。


继承的类型匹配


字类的对象,永远可以赋值给父类,(鸭子辩型法,或者子结构法)例如:


20210123132628731.png


面向对象中,这种现象,叫做里氏替换原则(是里氏这个人提出的原则,哈哈)


如果需要判断一个数据的具体子类类型,可以使用instanceof


20210123132845660.png


类的单根性和传递性


单根性:每个类最多只能拥有一个父类


传递性:如果A是B的父类,并且B是C的父类,则,可以认为A也是C的父类


image.png

相关文章
|
6月前
|
JavaScript
​​​​Typescript 接口 和继承 数组处理
ts的基础数据类型,可用来处理一般数据,但是碰到后台传入的复杂对象数组的时候,我们可以使用ts中的接口来定义处理
59 0
|
2月前
|
JavaScript
typeScript基础(3)_ts函数默认值和可选参数
本文介绍了在TypeScript中如何使用函数的默认值和可选参数。展示了如何为函数参数指定默认值,使得在调用函数时可以省略某些参数,以及如何定义可选参数。
154 2
|
1月前
|
JavaScript 索引
TypeScript(TS)安装指南与基础教程学习全攻略(二)
TypeScript(TS)安装指南与基础教程学习全攻略(二)
52 0
|
1月前
|
JavaScript 前端开发 安全
TypeScript(TS)安装指南与基础教程学习全攻略(一)
TypeScript(TS)安装指南与基础教程学习全攻略(一)
28 0
|
2月前
|
JavaScript 前端开发
typeScript基础(8)_ts类型断言
本文介绍了TypeScript中的类型断言,它用于在编译时告诉TypeScript某个对象具有特定的类型,即使它看起来不具备。类型断言可以用来访问一个类型上存在而另一个类型上不存在的属性或方法。需要注意的是,类型断言并不会在运行时改变JavaScript的行为,因此如果断言不当,运行时仍然可能出错。文章还提醒避免将类型断言为`any`类型或进行多重断言。
34 1
|
6月前
|
JavaScript
【TS】You are currently running a version of TypeScript which is not officially supported by @typesc
【TS】You are currently running a version of TypeScript which is not officially supported by @typesc
213 2
|
6月前
|
JavaScript 前端开发 开发者
JavaScript(JS)和TypeScript(TS)的区别
JavaScript(JS)和TypeScript(TS)的区别
119 0
|
6月前
|
JavaScript 前端开发 Ubuntu
TypeScript笔记(1)——环境配置与第一个ts程序
TypeScript笔记(1)——环境配置与第一个ts程序
61 0
|
1月前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
45 0
|
1月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧