type
status
date
slug
summary
tags
category
icon
password
什么是 Class(类)
类是对象的蓝图或模板,它定义了对象的属性和方法。在 TypeScript 中,类的定义与 JavaScript 非常相似,但 TypeScript 提供了静态类型和访问修饰符,使得类的使用更加灵活和安全。类的定义包括属性(成员变量)和方法(成员函数),它们共同构成了类的功能和行为。
定义一个类
我们可以使用
class
关键字来定义一个类。例如,定义一个简单的 Person
类:在上面的代码中,我们定义了一个
Person
类,包含两个属性 name
和 age
,以及一个构造函数和一个 greet
方法。构造函数用于初始化对象的状态,而方法定义了对象的行为。继承
类的继承是面向对象编程的一个重要特性,它允许我们创建一个基于现有类的新类。我们使用
extends
关键字来实现继承。例如,定义一个 Student
类继承自 Person
类:在上面的代码中,
Student
类继承了 Person
类,并增加了一个新的属性 grade
和一个新的方法 study
。通过继承,我们可以重用已有类的功能,并在此基础上进行扩展。访问修饰符
TypeScript 提供了三种访问修饰符:
public
、private
和 protected
。这些修饰符可以控制类成员的可见性和访问权限。public
:默认修饰符,表示成员是公开的,可以被类的内部和外部访问。
private
:表示成员是私有的,只能在类的内部访问。
protected
:表示成员是受保护的,可以在类的内部和子类中访问。
在上面的代码中,
name
是公开的,可以在类的外部访问;age
是私有的,只能通过 getAge
方法访问;species
是受保护的,可以在子类 Dog
中访问。通过使用访问修饰符,我们可以更好地控制类成员的可见性和安全性。静态成员
除了实例成员,类还可以包含静态成员。静态成员属于类本身,而不是类的实例。我们可以使用
static
关键字来定义静态成员。在上面的代码中,
PI
和 calculateCircumference
是静态成员,属于 MathUtil
类,而不是某个实例。静态成员通常用于定义与类相关的常量或工具方法。抽象类和抽象方法
抽象类是不能被实例化的类,只能被其他类继承。抽象类可以包含抽象方法,这些方法没有实现,必须在派生类中实现。我们可以使用
abstract
关键字来定义抽象类和抽象方法。在上面的代码中,
Shape
是一个抽象类,包含一个抽象方法 calculateArea
。Circle
类继承了 Shape
并实现了 calculateArea
方法。抽象类和抽象方法用于定义通用的接口,而具体的实现由子类提供。接口和类
接口可以用来定义类的结构,类可以实现一个或多个接口。接口定义了类应该具有的属性和方法,但不提供实现。
在上面的代码中,我们定义了一个
Drivable
接口,并在 Car
类中实现了该接口。接口用于定义类的行为规范,确保类实现特定的方法。多态性
多态性是面向对象编程的另一个重要特性,它允许我们通过父类的引用来调用子类的方法。这样,我们可以编写更加灵活和可扩展的代码。
在上面的代码中,我们定义了一个
Animal
抽象类和两个子类 Cat
和 Dog
。通过多态性,我们可以使用父类的引用来调用子类的方法,从而实现灵活的代码结构。类型断言
在某些情况下,我们可能需要将一个实例转换为特定的类类型。这时,我们可以使用类型断言来明确指定实例的类型。
在上面的代码中,我们使用了类型断言将
Bike
实例转换为 Vehicle
类型,并随后将其转换回 Bike
类型以调用特定的方法。类装饰器
类装饰器是一种特殊的声明,它可以用来修改类的行为或添加额外的功能。我们可以使用
@
符号来定义和应用装饰器。在上面的代码中,我们定义了一个
logClass
装饰器,用于在类被创建时日志记录。通过使用装饰器,我们可以轻松地添加额外的功能,而无需修改类的定义。- 作者:小白
- 链接:https://xiaobai-notes.top/article/ts-template-6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。