10. TypeScript面向对象的类(Class)

在 TypeScript 中,类是面向对象编程的基础,它们提供了一种方式来封装数据和行为。本文将详细介绍 TypeScript 中类的概念和用法。TypeScript扩展了ES的功能,跟JAVA关于面向对象的概念和写法很类似。

1. 类的基本概念

在 TypeScript 中,类是一个模板,类是一个模板,它定义了如何创建对象,以及对象的行为和属性。类的定义包括两个部分:类的属性和类的方法。属性是类的变量,它们描述了类的状态。方法是类的函数,它们描述了类的行为。

class Car {
  color: string;

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

  drive() {
    console.log('Driving...');
  }
}

2. 继承与多态

TypeScript 支持继承,这是面向对象编程的一个重要特性。继承是面向对象编程的一个重要特性,它允许我们创建一个新的类,这个新的类继承了一个已存在的类的属性和方法。这样,我们就可以在新的类中添加新的属性和方法,或者重写已存在的属性和方法,以满足新的需求。

多态是指子类可以被当作父类来使用。这意味着如果一个函数接受一个父类作为参数,那么它也可以接受任何一个子类作为参数。

class Tesla extends Car {
  autopilot: boolean;

  constructor(color: string, autopilot: boolean) {
    super(color);
    this.autopilot = autopilot;
  }

  selfDrive() {
    if (this.autopilot) {
      console.log('Self-driving...');
    }
  }
}

3. 修饰符(public, private, protected)

TypeScript 提供了 publicprivateprotected 三种访问修饰符。

  • public:成员可以在任何地方访问。
  • private:成员只能在类中访问。
  • protected:成员可以在类和子类中访问。
class Car {
  public color: string;
  private speed: number;
  protected engine: string;
}

4. 抽象类

抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类可以包含抽象方法,这些方法在抽象类中没有实现,在子类中必须被实现。抽象类的主要目的是提供一个通用的定义,子类可以根据自己的需求实现这个定义。

abstract class Vehicle {
  abstract wheels: number;

  startEngine() {
    console.log('Engine started...');
  }
}

class Bike extends Vehicle {
  wheels = 2;
}

5. 类与接口

在 TypeScript 中,接口可以用来描述类的结构,类可以实现一个或多个接口。接口定义了一组方法和属性,类必须实现接口中的所有方法和属性。这提供了一种强大的方式来保证类的一致性。

interface Drivable {
  startEngine(): void;
  drive(distance: number): void;
}

class Car implements Drivable {
  startEngine() {
    console.log('Engine started...');
  }

  drive(distance: number) {
    console.log(`Driving for ${distance} miles...`);
  }
}

总结

TypeScript 的类提供了强大的面向对象编程特性,包括类的基本概念、继承与多态、访问修饰符、抽象类以及类与接口的关系。希望这篇文章能帮助你理解和使用 TypeScript 的类。

相关推荐

  1. 10. TypeScript面向对象Class

    2024-04-09 20:38:04       39 阅读
  2. 第八章TypeScript class

    2024-04-09 20:38:04       36 阅读
  3. 面向对象编程中详解

    2024-04-09 20:38:04       27 阅读
  4. 10】PyQt面向对象

    2024-04-09 20:38:04       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 20:38:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 20:38:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 20:38:04       82 阅读
  4. Python语言-面向对象

    2024-04-09 20:38:04       91 阅读

热门阅读

  1. 【前端基础】文字逐渐显示效果

    2024-04-09 20:38:04       31 阅读
  2. 组合模式:构建灵活的树形结构

    2024-04-09 20:38:04       31 阅读
  3. SpringBoot和SpringCloud,SpringCloudAlibaba版本依赖关系

    2024-04-09 20:38:04       35 阅读
  4. 保定市公安局依法为民赢赞誉

    2024-04-09 20:38:04       39 阅读
  5. 如何判断一个linux机器是物理机还是虚拟机

    2024-04-09 20:38:04       35 阅读
  6. Docker详细安装与使用教程:从入门到实践

    2024-04-09 20:38:04       38 阅读
  7. C++ :手动实现std::any

    2024-04-09 20:38:04       33 阅读
  8. Vue3有哪些常用的API

    2024-04-09 20:38:04       34 阅读