この動画はメンバー限定動画です
全ての講座が
月額990円で学び放題
前のレッスンまでで、商品を管理するItemクラスを作りました。
class Item {
public name: string = '';
private _stock: number = 0;
}
ではここに、食品などの場合に「消費期限」として「limit_date」といったプロパティを準備したいとしましょう。そこで、Itemクラスにプロパティを追加したとします。
class Item {
public name: string = '';
private _stock: number = 0;
public limit_date = 0; // 消費期限
}
しかし、これはあまり好ましい方法とは言えません。「商品」というクラスは食品以外のオブジェクトでも使われる可能性があり、その場合には、この消費期限というプロパティは不要です。
このような使ったり使わなかったりするプロパティが増えていってしまうと、クラスが管理しにくくなってしまいます。そこで「子クラス」と利用すると良いでしょう。
子クラスを作ろう
「子クラス」とは、あるクラスを元に独自のプロパティやメソッドを追加できるしくみのことで、ここでは、商品(Item)というクラスを元に、食品(Food)というクラスを作ってみましょう。
まずは、元となるItemクラスを準備します。ここでは、簡単な定義に留めるために、プロパティのみ定義します。
子クラスを定義する場合は、クラスの定義に「extends」という宣言を追加して、親クラスにしたいクラス名を追加します。次のように、Foodクラスを追加しましょう。
class Food extends Item {
これにより、FoodというクラスはItemというクラスの内容をそのまま取り込みます。これを「継承」といいます。後は、Foodクラスでだけ必要となるプロパティやメソッドを定義していきます。ここでは、消費期限を管理する「limit_date」を定義しましょう。
class Food extends Item {
limit_date: number = 0;
}
子クラスを利用しよう
ではこのクラスを使ってみましょう。これまで通り、インスタンスを定義できます。
const peach = new Food();
そして、定義したプロパティも利用できます。
peach.limit_date = 5;
また、継承している「Item」クラスのプロパティも利用できます。
peach.name = "もも";
こうして、クラスを「拡張」することができるという訳です。