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;
}
}