螺竹编程
发布于 2024-05-27 / 3 阅读
0

TypeScript/面向对象:类

TypeScript是一种静态类型的编程语言,它是JavaScript的超集,因此它可以使用JavaScript的所有功能,同时也提供了额外的语言特性,其中包括类和对象。

类是一种面向对象编程的概念,它是一种结构化的数据类型,它定义了一种对象的属性和方法。在TypeScript中,可以使用class关键字定义类,例如:

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

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

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

上述代码定义了一个名为Person的类,它有两个私有属性name和age,一个构造函数,以及一个公共方法sayHello。构造函数用于在创建对象时初始化类的属性,而sayHello方法用于打印对象的属性值。

对象是类的实例,它是类的具体化,具有类中定义的属性和方法。在TypeScript中,可以使用new关键字创建类的实例,例如:

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

上述代码创建了一个名为person的Person类的实例,并调用了它的sayHello方法。输出结果为"Hello, my name is Alice and I am 30 years old."。

在TypeScript中,类可以继承另一个类,这意味着一个类可以使用另一个类的属性和方法。继承使用extends关键字,例如:

class Employee extends Person {
  private salary: number;

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

  public saySalary(): void {
    console.log(`My salary is ${this.salary} dollars.`);
  }
}

上述代码定义了一个名为Employee的类,它继承自Person类,并添加了一个名为salary的私有属性和一个名为saySalary的公共方法。在构造函数中,它通过调用父类的构造函数来初始化name和age属性,并初始化自己的salary属性。

可以使用与Person类相同的方式创建Employee类的实例,并调用它的方法。由于Employee类继承自Person类,因此Employee类的实例也可以调用Person类中定义的方法。