TypeScriptにおけるOOPの抽象メソッド

継承クラスに共通のメソッドが必要であるが、その実装は特定の継承クラスに依存する場合があります。 この場合、そのメソッドを抽象クラスで宣言し、実装を書かずに済ませることができます。 そうすれば、継承クラスはこれらのメソッドを実装する義務が生じます。 このようなメソッドは抽象メソッドと呼ばれ、キーワードabstractを用いて宣言されます。

例として、抽象クラスUserを取り上げましょう。 このクラスの継承クラスは、オブジェクトのデータを出力するメソッドshowを持つことが必須であるとします。

ただし、このメソッドの実装は継承クラスに依存します。 クラスUserでこのメソッドを抽象メソッドとして宣言してみましょう。

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

継承クラスStudentでこのメソッドを実装します。

typescriptclass Student extends User {
  public course: number;

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

継承クラスEmployeeでこのメソッドを実装します。

typescriptclass Employee extends User {
  public salary: number;

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

抽象クラスFigureで、面積と周囲長を取得するための抽象メソッドを作成してください。

Задание 2

継承クラスSquareおよびRectangleで、これらのメソッドの実装を記述してください。