戻る

ポリモーフィズム
ポリモーフィズム

同じ名前のメソッドがオブジェクトの型に応じて異なる実行をする仕組みです。
親クラスのメソッドを子クラスでオーバーライドすることで
共通のインターフェイスを持つオブジェクトに対して
ここの実装にあった処理を実行できます。

[サンプル]
copy
class Calc
{
	#num1 = 0;
	#num2 = 0;
	get num1()
	{
		return this.#num1;
	}
	set num1(num)
	{
		this.#num1 = num;
	}
	get num2()
	{
		return this.#num2;
	}
	set num2(num)
	{
		this.#num2 = num;
	}
	result()
	{
		return this.num1 * this.num2;
	}
}

class Add extends Calc
{
	result()
	{
		return this.num1 + this.num2;
	}

}
class Minus extends Calc
{
	result()
	{
		return this.num1 - this.num2;
	}

}
function calcResult(calc, num1, num2)
{
	calc.num1 = num1;
	calc.num2 = num2;
	return calc.result()
}
const add = new Add();
const minus = new Minus();
console.log(calcResult(add, 2, 3));//5
console.log(calcResult(minus, 5, 3));//2
継承を使って親クラスから必要な処理を実装するため
下記のように子クラスで継承します。
(1) class Add extends Calc
(2) class Minus extends Calc
このケースではAddクラスおよびMinusクラスで計算するために
インスタンス化したオブジェクトを渡して共通メソッドを実行しています。
共通メソッドを実行するため関数を実行します。
function calcResult(calc, num1, num2)
calc : 継承した同じ親クラスのオブジェクト
num1 : 計算する左側の数字
num2 : 計算する右側の数字

return calc.result()
継承した共通メソッド名を実行します。
オブジェクトにより子クラス別の内容のメソッド内容を実行することができます。




戻る


著作権情報
ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。
ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、
または公開したりすることはできません。
当方は、ホームペーよびアプリ利用したいかなる理由によっての障害等が発生しても、
その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について
一切の責任を負わないものとします。