TypeScriptにおけるOOPの抽象メソッド
継承クラスに共通のメソッドが必要であるが、その実装は特定の継承クラスに依存する場合があります。
この場合、そのメソッドを抽象クラスで宣言し、実装を書かずに済ませることができます。
そうすれば、継承クラスはこれらのメソッドを実装する義務が生じます。
このようなメソッドは抽象メソッドと呼ばれ、キーワードabstractを用いて宣言されます。
例として、抽象クラスUserを取り上げましょう。
このクラスの継承クラスは、オブジェクトのデータを出力するメソッドshowを持つことが必須であるとします。
ただし、このメソッドの実装は継承クラスに依存します。
クラスUserでこのメソッドを抽象メソッドとして宣言してみましょう。
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
継承クラスStudentでこのメソッドを実装します。
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
継承クラスEmployeeでこのメソッドを実装します。
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
抽象クラスFigureで、面積と周囲長を取得するための抽象メソッドを作成してください。
継承クラスSquareおよびRectangleで、これらのメソッドの実装を記述してください。