TypeScriptにおける抽象的なOOPクラス

親クラスが共通のプロパティやメソッドを持ち、 そこから子クラスが継承する状況があります。

その場合、子クラスのオブジェクトは作成しても、 親クラスのオブジェクトは作成しないこともあります。 親クラスは、共通のプロパティやメソッドを グループ化するためだけに必要なのです。

このような場合、親クラスのオブジェクトの生成を 明示的に禁止するために、親クラスを抽象的 と宣言することができます。 これはキーワードabstractを使用して行います。

例を見てみましょう。私たちのクラスUserを 取り上げ、それを抽象クラスとして宣言します:

typescriptabstract class User {
  public name: string;
  
  constructor(name: string) {
    this.name = name;
  }
}

Userを継承するクラスStudentを作成しましょう:

typescriptclass Student extends User {
  public course: number;

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

Userを継承するクラスEmployeeを作成しましょう:

typescriptclass Employee extends User {
  public salary: number;

  constructor(name: string, salary: number) {
    super(name);
    this.salary = salary;
  }
}
Задание 1

幾何学的図形を表す抽象クラスFigureを作成してください。 その中に、周囲の長さと面積のためのプロパティを設けてください。

Задание 2

クラスFigureを継承するクラスSquareを作成してください。

Задание 3

クラスFigureを継承するクラスRectangleを作成してください。