1️⃣ 面向对象的概述

2️⃣ 什么是面向对象

面向对象:Oriented( 基于 ) Object( 事物 ),基于对象,所以被称为面向对象,也被简称为 oo
面向对象是一种编程思想,它提出一切以对象为切入点思考问题。以划分类为思考切入点。
其他编程思想

  1. 1. 面向过程:以功能流程为思考切入点,不太适合大型应用的开发
  2. 1. 函数式编程:以数学运算为思考切入点

类:可以产生对象的模板

1️⃣ 类的继承

2️⃣ 继承的作用

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
子类的创建可以增加新数据、新功能,可以继承父类全部的功能,但是不能选择性的继承父类的部分功能。继承是类与类之间的关系,不是对象与对象之间的关系。
如果某类B“继承”另某类A,就把这个B称为“A的子类或派生类(subclass)”,而把类A称为“B的父类”也可以称为“A是B的超类或基类(superclass)”
如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。
继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。一般静态的面向对象编程语言,继承属于静态的,意即子类别的行为在编译期就已经决定,无法在执行期扩充。
那么如何使用继承呢?用extends关键字来继承父类。

如上面A类与B类,当写继承语句时,class A类 extends B类{ } 其中A类是子类,B类是父类。 继承的语句格式: class 子类名 extends 父类名{} class 父类 { } class 子类 extends 父类 { }

2️⃣ 成员的重写

重写( override ):子类中覆盖父类的成员,子类成员不能改变父类成员的类型,无论是属性还是方法,子类都可以对父类相应的成员进行重写,但是重写时,需要保证类型的匹配。
在子类的方法中可以使用 super 关键字读取父类的资源。

注意 this 关键字:在继承中,this 的指向是动态的根据具体的调用者确定指向

2️⃣ 继承的单跟性和传递性

3️⃣ 单根性

每个类最多只能拥有一个父类

3️⃣ 传递性

如果 A 是 B 的父类,B 是 C 的父类,则可以认为 A 也是 C 的父类,C 中也有 A 的属性和方法

1️⃣ 抽象类

2️⃣ 为什么需要抽象类

有时,某个类只表示抽象的概念,主要用于子类提取共有的成员,而不能直接创建它的对象,该类可以作为抽象类。
使用抽象类就是在一个类前加上关键字 **abstract** 抽象类不可以创建一个对象
image.png

2️⃣ 抽象成员

父类中,可能知道有些成员是必须存在的,但是不知道该成员的值或实现什么,因此,需要一种强约束,让继承该类的子类,必须要实现该成员
抽象成员必须出现在抽象类中,子类必须时间父类的抽象成员。
image.png

2️⃣ 设计模式 - 模板模式

设计模式:面对一些常见的功能场景,有一些固定的,经过多年实践的成熟方法,这些方法称之为设计模式。
模板模式:有些方法,所有的子类实现的流程完全一致,只是流程中的某个步骤的具体实现不一致,可以将该方法提取到父类,在父类中完成整个流程的实现,遇到实现不一致的方法时,将该方法做成抽象方法
image.png

1️⃣ 静态成员

静态成员是指附着在一个类上的成员( 属于某个构造函数的成员 )
使用 static 修饰的成员,是静态成员。
实例成员:对象成员,属于某个类的对象
实例方法中的 this 指向 new 出来的实例
静态成员:非实例成员,属于某个类
静态方法中的 this 指向类本身
image.png

2️⃣ 设计模式 - 单例模式

image.png

1️⃣ 接口

接口和类型别名最大的区别在于,接口可以被类实现,而类型别名不可以

2️⃣ 类实现接口

面向对象领域中的接口的语义:表达了某个类是否拥有某种能力
某个类具有某种能力,其实就是实现了某种能力
类方法的强约束通过接口来实现
类要实现接口要通过 implements 关键字
image.png

2️⃣ 类型保护函数

通过调用该函数会触发 TS 的类型保护,该函数必须返回 boolean
image.png

3️⃣ 创建类型保护

image.png

2️⃣ 接口继承类

表示类的所有成员都在接口中
image.png

1️⃣ 索引器

2️⃣ 使用索引器

**对象[值]**,使用成员表达式
在 TS 中,默认情况下,不对索引器( 成员表达式 )做严格的类型检查
image.png
要想 TS 对索引器执行严格的类型检查要开启指定的配置
**"noImplicitAny": true** 开启对隐式 any 的检查,表示 TS 中不可以使用隐私的 any。开启后就可以对索引器做严格的检查了。
隐式 any:TS 根据实际情况推导出来的 any 类型
image.png

2️⃣ 约束索引器的约束类型

在索引器中,键的类型可以是字符串,也可以是数字
在类中,索引器书写的位置应该在最顶部
TS 中索引器的作用

  1. 1. 在严格的检查下,可以实现为类动态添加成员
  2. 1. 可以实现动态的操作类成员

image.png
索引器会约束类中的所有成员
image.png

1️⃣ this 指向约束

  1. "noImplicitThis": true // 表示不允许 this 的指向隐式指向 any

image.png