📜  python ppt中的类和对象——TypeScript(1)

📅  最后修改于: 2023-12-03 14:46:02.827000             🧑  作者: Mango

Python PPT中的类和对象——TypeScript

在Python PPT中,展示了类和对象的概念以及如何在Python中使用它们来构建程序。现在,我们将把这些概念转换成TypeScript,并介绍如何在TypeScript中使用它们。

类的概念

在TypeScript中,类是一个定义了一组属性和方法的蓝图。类定义了对象的形式,因此我们可以基于这个蓝图创建对象。TypeScript的类是基于面向对象编程的原则定义的。

下面是一个使用TypeScript定义的简单类的例子:

class Person {
  firstName: string;
  lastName: string;

  constructor(firstName: string, lastName: string) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  sayHello() {
    console.log(`Hello, ${this.firstName} ${this.lastName}`);
  }
}

let person = new Person("John", "Doe");
person.sayHello();  // 输出 "Hello, John Doe"

上面的代码定义了一个Person类,有一个constructor方法和一个sayHello方法。constructor方法是类的构造函数,用于初始化对象的属性。sayHello方法用于输出 persons 的姓名。

对象的概念

对象是类的实例。我们可以把它们看作是具有类中定义的属性和方法的变量。

下面是一个使用TypeScript创建的对象的例子:

let person = new Person("John", "Doe");
person.sayHello(); // 输出 "Hello, John Doe"

上面的代码实例化了Person类,并且通过调用sayHello方法输出了 "Hello, John Doe"。

类的继承

类的继承是一种使用一个已经存在的类作为基础创建新类的机制。在TypeScript中,我们可以使用extends和super关键字来实现类的继承。下面是一个使用TypeScript实现类的继承的例子:

class Animal {
  name: string;

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

  move(distanceInMeters: number = 0) {
    console.log(`${this.name} moved ${distanceInMeters}m.`);
  }
}

class Snake extends Animal {
  constructor(name: string) {
    super(name);
  }

  move(distanceInMeters = 5) {
    console.log("Slithering...");
    super.move(distanceInMeters);
  }
}

class Horse extends Animal {
  constructor(name: string) {
    super(name);
  }

  move(distanceInMeters = 45) {
    console.log("Galloping...");
    super.move(distanceInMeters);
  }
}

let sam = new Snake("Sammy the Python");
let tom: Animal = new Horse("Tommy the Palomino");

sam.move(); // 输出 "Slithering... Sammy the Python moved 5m."
tom.move(34); // 输出 "Galloping... Tommy the Palomino moved 34m."

上面的代码定义了Animal和Snake和Horse类。在这个例子中,Snake和Horse继承了Animal类。Snake和Horse类覆盖了原来的move方法并增加了一些新的行为。我们也可以看到,在Snake类的构造函数中,我们调用了super()方法,它会调用Animal类的构造函数。这样,子类就可以访问父类中定义的属性。

类的访问控制

在TypeScript中,我们可以使用访问修饰符来限制对类的属性和方法的访问。这些访问修饰符包括public、private和protected。

  • public:公共的,可以在类内部和外部访问
  • private:私有的,只能在类内部访问
  • protected:受保护的,只能在类及其子类中访问

下面是一个通过私有属性实现类的访问控制的例子:

class Animal {
  private name: string;

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

  public move(distanceInMeters: number = 0) {
    console.log(`${this.name} moved ${distanceInMeters}m.`);
  }
}

class Horse extends Animal {
  constructor(name: string) {
    super(name);
  }

  public move(distanceInMeters = 45) {
    console.log("Galloping...");
    super.move(distanceInMeters);
  }
}

const animal = new Animal("Horse");
animal.move(); // 编译错误: 属性 'name' 是私有的,只能在类内部访问。

let tom: Animal = new Horse("Tommy the Palomino");
tom.move(34); // 输出 "Galloping... Tommy the Palomino moved 34m."

上面的代码定义了Animal和Horse类。在Animal类中,我们将name属性设置为私有属性。这样,我们在类外部是无法直接访问它的。在下面的代码中,我们使用let tom:Animal = new Horse("Tommy the Palomino")来创建Horse类的实例,但是它的类型是Animal,因此我们只能通过公共的move方法访问它。

总结

在TypeScript中,我们可以使用类和对象来构建程序。类是一个定义了一组属性和方法的蓝图。对象是类的实例。我们也可以使用继承和访问修饰符来实现类的继承和访问控制。TypeScript的类和对象是基于面向对象编程原则定义的。