📜  javascript 抽象类 - Javascript (1)

📅  最后修改于: 2023-12-03 15:01:43.419000             🧑  作者: Mango

JavaScript 抽象类

在面向对象编程中,抽象类是一个不能被实例化的类,只能被其他子类继承的类。JavaScript 语言本身并没有提供抽象类的实现方式,但是我们可以使用其他方式模拟实现抽象类的功能。

实现抽象类

要实现一个抽象类,我们可以使用以下代码:

class AbstractClass {
  constructor() {
    if (new.target === AbstractClass) {
      throw new TypeError('Cannot construct AbstractClass instances directly');
    }
  }

  abstractMethod() {
    throw new TypeError('Method not implemented');
  }
}

上面的代码定义了一个 AbstractClass 类,它有一个抽象方法 abstractMethod。这个方法在子类中必须被重写实现。在构造函数中,我们使用 new.target 属性来检查当前实例是否是直接实例化的抽象类,如果是,就抛出一个错误。

继承抽象类

一个子类可以继承一个抽象类,并实现该抽象类的抽象方法。下面是一个示例代码:

class ConcreteClass extends AbstractClass {
  abstractMethod() {
    console.log('ConcreteClass implements abstractMethod');
  }
}

上面的代码定义了一个 ConcreteClass 类,并继承了 AbstractClass 类。它实现了抽象方法 abstractMethod,在这个方法中输出了一条信息。

总结

尽管 JavaScript 语言本身没有提供抽象类的实现方式,但是我们可以使用其他方式来模拟实现抽象类的功能。通过定义抽象类和抽象方法,我们可以限制子类必须实现某些方法,从而提高代码的可读性和可维护性。