Javascript問題集(クラス)解答
「Javascript問題集(クラス)」の解答は下記になります。
問題1の解答
「クラス」は「class」キーワードを使用して定義することができます。
「class」の後に「クラス名」が続き、波括弧内に「コンストラクタ」「プロパティ」や「メソッド」を定義します。
例えば、
class クラス名 { //コンストラクタ //プロパティ //メソッド }
のように「クラス」に定義する内容を記述していきます。
問題2の解答
「constructor」メソッドは、「クラス」から「オブジェクト」を作成する際に実行されるメソッドです。
このメソッド内で、「オブジェクト」の「初期状態」を設定するための処理を行います。
例えば、
class Student { constructor(no, name) { this.no = 1; this.name = name; } }
のように定義します。
問題3の解答
「クラス」から作成した「オブジェクト」に対して、「ドット演算子」を使用して「メソッド」を呼び出します。
例えば、オブジェクトの名前が「car」で、メソッドの名前が「forward」であれば、下記のように呼び出すことができます。
car.forward();
のようになります。
問題4の解答
「クラス」から作成した「オブジェクト」に対して、「ドット演算子」を使用して「プロパティ」にアクセスします。
例えば、「オブジェクト」の名前が「scores」で、「プロパティ」の名前が「count」であれば、下記のようにアクセスすることができます。
scores.count;
のようになります。
問題5の解答
「静的メソッド」を定義するには、「static」キーワードをメソッドの前に付けます。
「静的メソッド」は、クラスから直接呼び出すことができます。
例えば、
lass Sample { static testValue = 'abc'; static testMethod(){ return 'call testMethod'; } } console.log(Sample.testValue); console.log(Sample.testMethod());
のように定義します。
問題6の解答
「継承」を行うには、「extends」キーワードを使用します。
「継承したいクラス名」を「extends」の後に指定します。
例えば、
class ParentSample { constructor(count, volume) { this.count = count; this.volume = volume; } displayStatus(){ console.log(`count=${this.count} volume=${this.volume}`); } } class ChildSample extends ParentSample { childMethod(){ console.log('call child method'); } } let childSample = new ChildSample(23, 187); childSample.displayStatus(); childSample.childMethod();
問題7の解答
「アクセサメソッド」を定義するには、「get」または「set」キーワードを「プロパティ」の前に付けます。
「get」キーワードを付けたメソッドは、「プロパティの値」を取得するために使用され、「set」キーワードを付けたメソッドは、「プロパティの値」を設定するために使用されます。
例えば、
class Human { name = ''; #skill = ''; constructor(name, skill) { this.name = name; this.#skill = skill; } get skill(){ return this.#skill; } set skill(content){ this.#skill = content; } } let human = new Human('taro','柔道'); console.log(human.#skill); human.skill='柔道・剣道';
のように定義します。
問題8の解答
「プライベートプロパティ」を定義するには、「#」を「プロパティ」の名前の前に付けます。
このように定義された「プロパティ」は、「クラスの内部」からのみアクセスすることができます。
例えば、
class AccountData { #amount = 0; #name = 0; }
のように定義します。
問題9の解答
「プロトタイプメソッド」は、「インスタンス」に対して定義される「メソッド」であり、「クラス」の「プロトタイプ」に直接追加されます。
一方、「クラスメソッド」は、「クラス自体」に定義される「メソッド」であり、「インスタンス」に依存せず、「クラス自体」に直接追加されます。
問題10の解答
「constructor」 の中で「super()」 を呼び出すことは、「親クラスのコンストラクタ」を呼び出すことを意味しています。
「親クラスのコンストラクタ」を呼び出すことで、「親クラス」が持つ「プロパティ」や「メソッド」を引き継ぐことができます。
また、「親クラス」の「コンストラクタ」に引数がある場合は、「super()」に引数を渡すことで、「親クラスのコンストラクタ」に「引数」を渡すこともできます。
下記は、「constructor」 の中で「super()」 を呼び出す例です。
class ParentClass { constructor(pProp) { this.pProp = pProp; } } class ChildClass extends ParentClass { constructor(pProp, cProp) { super(pProp); // 親クラスのコンストラクタを呼び出す this.cProp = cProp; } }