プログラミングライフスタイル
Javascript問題集

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

→(前へ)「JavaScript(クラス)」の問題

HOMEへ