TypeScriptにおける抽象的なOOPクラス
親クラスが共通のプロパティやメソッドを持ち、 そこから子クラスが継承する状況があります。
その場合、子クラスのオブジェクトは作成しても、 親クラスのオブジェクトは作成しないこともあります。 親クラスは、共通のプロパティやメソッドを グループ化するためだけに必要なのです。
このような場合、親クラスのオブジェクトの生成を
明示的に禁止するために、親クラスを抽象的
と宣言することができます。
これはキーワードabstractを使用して行います。
例を見てみましょう。私たちのクラスUserを
取り上げ、それを抽象クラスとして宣言します:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Userを継承するクラスStudentを作成しましょう:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Userを継承するクラスEmployeeを作成しましょう:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
幾何学的図形を表す抽象クラスFigureを作成してください。
その中に、周囲の長さと面積のためのプロパティを設けてください。
クラスFigureを継承するクラスSquareを作成してください。
クラスFigureを継承するクラスRectangleを作成してください。