ポリモーフィズム (Polymorphism / 多態性)
「同じ命令を送っても、相手(オブジェクト)によって振る舞いが変わる」というOOPの重要な性質です。利用側は相手の細かい種類を気にせずに済みます。
// FanもPortableFanも、どちらも .blowing() を持っている
const fans = [new Fan(), new PortableFan()];
fans.forEach(fan => {
// 相手に応じて、普通の風か、バッテリー連動の風かが自動で切り替わる
fan.blowing();
});
親クラスのメソッド実行 (super.method)
子クラスでメソッドをオーバーライドする際、親クラスの元の処理を活かしつつ機能を追加したい場合に使用します。
class PortableFan extends Fan {
blowing() {
if (this.battery > 0) {
super.blowing(); // 親クラス(Fan)の元の処理を再利用
this.battery--; // 子クラス独自の処理(バッテリーの減少)を追加
}
}
}
実践例:異種インスタンスの配列管理
継承関係にあるクラスのインスタンスを一つの配列にまとめることで、「全台一括操作」などが非常に簡潔に記述できるようになります。これがポリモーフィズムの最大の利点の一つです。