类的定义和实例化

在 TypeScript 中,类是面向对象编程的基础。通过类,我们可以创建对象的蓝图,定义对象的属性和方法。本教程将详细介绍如何在 TypeScript 中定义类以及如何实例化类。

1. 类的定义

在 TypeScript 中,类的定义使用 class 关键字。一个类通常包含以下几个部分:

  • 构造函数 (Constructor): 用于初始化对象的属性。
  • 属性 (Properties): 对象的状态。
  • 方法 (Methods): 对象的行为。

1.1 基本类定义

以下是一个简单的类定义示例:

class Person {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    greet(): void {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }
}

在这个例子中:

  • name 和 age 是类的属性。
  • constructor 是构造函数,用于初始化 name 和 age。
  • greet 是一个方法,用于输出问候语。

1.2 访问修饰符

TypeScript 提供了三种访问修饰符:

  • public: 默认修饰符,可以在类的外部访问。
  • private: 只能在类的内部访问。
  • protected: 可以在类的内部和子类中访问。

例如:

class Person {
    private name: string;
    protected age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    public greet(): void {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }
}

在这个例子中,name 是私有的,只能在 Person 类内部访问;age 是受保护的,可以在 Person 类及其子类中访问。

2. 类的实例化

类的实例化是通过 new 关键字来完成的。实例化后,我们可以调用类的方法和访问类的属性。

2.1 实例化类

以下是如何实例化 Person 类的示例:

const person = new Person("Alice", 30);
person.greet(); // 输出: Hello, my name is Alice and I am 30 years old.

在这个例子中,我们创建了一个 Person 类的实例 person,并调用了 greet 方法。

2.2 访问属性

虽然 name 是私有的,不能直接访问,但我们可以通过公共方法来间接访问它:

class Person {
    private name: string;
    protected age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    public greet(): void {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }

    public getName(): string {
        return this.name;
    }
}

const person = new Person("Alice", 30);
console.log(person.getName()); // 输出: Alice

在这个例子中,我们添加了一个 getName 方法,用于返回 name 属性的值。

3. 实践练习

3.1 练习:定义一个 Car 类

定义一个 Car 类,包含以下属性和方法:

  • 属性: brand (品牌), model (型号), year (年份)
  • 方法: start (启动), stop (停止)

要求:

  • brand 和 model 是公共的。
  • year 是私有的。
  • start 和 stop 方法分别输出 "Car started" 和 "Car stopped"。

3.2 练习:实例化 Car 类

实例化 Car 类,并调用 start 和 stop 方法。

4. 总结

通过本教程,我们学习了如何在 TypeScript 中定义类以及如何实例化类。类是面向对象编程的核心概念,掌握类的定义和实例化是进一步学习 TypeScript 的基础。

希望本教程能帮助你更好地理解 TypeScript 中的类和对象。继续练习和探索,你将能够编写出更加复杂和功能强大的 TypeScript 程序。