{category}

JavaScript - 継承とポリモーフィズム

ポリモーフィズム

オブジェクト指向

意味 同一インターフェースの異なる振る舞い


ポリモーフィズムとは?

ポリモーフィズムは、オブジェクト指向プログラミングの原則の一つで、異なるクラスのオブジェクトが同じインターフェース(メソッドなど)を持つことを指します。これにより、コードの再利用性や拡張性が向上します。

ポリモーフィズムの具体的な使い方

異なるクラスで同じメソッドを実装する例

class Shape {
  area() {
    return 0;
  }
}

class Circle extends Shape {
  constructor(radius) {
    super();
    this.radius = radius;
  }
  area() {
    return Math.PI * this.radius ** 2;
  }
}

class Rectangle extends Shape {
  constructor(width, height) {
    super();
    this.width = width;
    this.height = height;
  }
  area() {
    return this.width * this.height;
  }
}

function calculateArea(shape) {
  console.log(`面積: ${shape.area()}`);
}

const circle = new Circle(5);
const rectangle = new Rectangle(4, 6);

calculateArea(circle);
calculateArea(rectangle);

👇出力結果

面積: 78.53981633974483
面積: 24

この例では、'Shape'クラスを継承した'Circle'と'Rectangle'クラスが、それぞれ異なる方法で'area'メソッドを実装しています。'calculateArea'関数は、渡されたオブジェクトの型に関係なく'area'メソッドを呼び出せます。これがポリモーフィズムの実例です。

ポリモーフィズムに関するよくある質問

Q. ポリモーフィズムとは?
A. ポリモーフィズムとは、同じインターフェースを持つ異なるクラスのオブジェクトが、それぞれ異なる方法で動作する能力のことです。これにより、コードの再利用性と柔軟性が向上します。
Q. ポリモーフィズムの利点は?
A. ポリモーフィズムの主な利点は、コードの再利用性、拡張性、保守性の向上です。新しい派生クラスを追加する際に、既存のコードを変更せずに済むため、システムの柔軟性が高まります。
Q. オーバーロードとの違いは?
A. ポリモーフィズムとオーバーロードは異なる概念です。ポリモーフィズムは異なるクラスで同名のメソッドが異なる動作をすることを指しますが、オーバーロードは同じクラス内で同名のメソッドが異なる引数を取ることを指します。

ポリモーフィズムが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、JavaScriptのポリモーフィズムやConstructor、this、メソッドチェーン、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


JavaScriptを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!JavaScriptはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

Constructor

クラスの初期化関数

種類: クラスとインスタンス

this

現在のオブジェクトを参照

種類: クラスとインスタンス

メソッドチェーン

メソッドの連鎖

種類: その他のオブジェクト指向機能

Namespace

コードの衝突回避

種類: その他のモジュール関連の概念

*

乗算

種類: 演算子