7、TypeScript 类(class)
2022-03-31 13:51:06 0 举报
AI智能生成
TS学习笔记
作者其他创作
大纲/内容
定义类
类(Class)定义了一件事物的抽象特点,包含它的属性和方法
以上述为例
TS 中,也是通过 Class 关键字来定义一个类, 使用 constructor 定义构造函数。
构造函数: constructor
主要用于初始化类的成员变量属性
类的对象创建时自动调用执行
没有返回值
类的继承
实现
使用 extends 关键字实现继承,子类中使用 super 关键字来调用父类的构造函数和方法。
以上述为例
子类继承父类后子类的实例就拥有了父类中的属性和方法,可以增强代码的可复用性
将子类共用的方法抽象出来放在父类中,自己特殊逻辑放在子类中重写父类的逻辑
super 可以调用父类上的方法和属性
(相当于ES5的:在静态方法和构造函数中指向父类; 在原型方法中指向父类的prototype;)
(相当于ES5的:在静态方法和构造函数中指向父类; 在原型方法中指向父类的prototype;)
类的修饰符
TypeScript 中有三类访问修饰符,分别是: public、private、protected。不写默认为 public;和一个只读修饰符 readonly
访问修饰符
public
公共的
自己、自己的子类、
其他类都可以访问
其他类都可以访问
protected
受保护的
自己、自己的子类都能访问,
其他类不能访问
其他类不能访问
private
私有的
只有自己能访问,
子类和其他类不能访问
子类和其他类不能访问
只读修饰符
readonly
修饰的变量只能在属性声明时 或 构造函数 中初始化
举个🌰
仅读属性只能在constructor中被赋值
注意
readonly 只是在 编译阶段进行代码检查。运行时依然能打印
编译时
编译时异常
运行时
依然更改了 name 属性
参数属性
在上面的例子中,都是在类的定义的顶部初始化实例属性,在 constructor 里接收参数然后对实例属性进行赋值,参数属性就是为了简化这一过程的
直接在 constructor 构造函数的参数前面加上修饰符 => 等同于在类中定义该属性同时给该属性赋值,使代码更简洁。
存取器
可以通过 getter/ setter来改变一个类中属性的读取和赋值行为
静态属性和方法 static
使用 static 修饰符修饰的方法称为静态方法,它们不需要实例化,而是直接通过类来调用
个人理解为:类的对象角色下的属性方法
抽象类和方法 abstract
使用 abstract 关键字来定义抽象类和 在抽象类内部定义抽象方法。
抽象类
抽象描述一种概念,做为其它类的基类使用
举个🌰
无法创建抽象类的实例,抽象类只能被继承
抽象方法
特点
抽象方法不能在抽象类中实现,只能在抽象类的具体子类中实现,而且必须实现
抽象方法只能出现在抽象类中
举个🌰
子类可以对抽象类进行不同的实现
0 条评论
下一页