クラスの概念は難しく感じますが何度も繰り返し復習して覚えてくださいね。そんな中でもsuper()について学びました。これは親のコンストラクタをオーバーライドする時に使います。
- class Food {
- constructor(name_value, special) {
- this.name = name_value;
- this.point = special;
- }
- }
- class Meat extends Food {
- constructor(name_value, special, chef) {
- super(name_value, special); //←superでFoodクラスのコンストラクタをオーバーライド
- this.chef_name = chef;
- }
- info() {
- return 'この' + this.name + 'は' + this.point + 'が特徴です。' + this.chef_name + 'が調理しました。';
- }
- }
- const meat = new Meat('ハンバーグ', 'チーズ', 'たろう');
- console.log(meat.info());
- //→このハンバーグはチーズが特徴です。たろうが調理しました。
まず、「Food」クラスには2つのプロパティが用意されています。「name」「point」です。このクラスを継承した子クラス「Meat」を定義します。この子クラスは新たなプロパティ「chef_name」を持っていますが、親クラス(Food)のプロパティも継承したい時に1行目に記述するのが「super(引数)」です。
子クラスの「Meat」インスタンスの引数に3つ入れています。第1引数、第2引数は親クラスのプロパティの値に代入され、第3引数は子クラス独自のコンストラクタ内のプロパティの値に代入されています。
そして子クラスの「info」メソッド内でこれらのプロパティの値を取り出します。インスタンス作成後infoメソッドを呼び出してきちんとsuperによるオーバーライドが出来ていることがわかりますね。
最初は難しいですが何度も繰り返し記述して覚えていきましょう。
関連記事
JavaScriptのクラスについて知ろう
JavaScriptのコンストラクタ
JavaScriptのプロパティ
コメント