Java のポリモーフィズム: 総合ガイド
オブジェクト指向プログラミングでは、ポリモーフィズムにより、異なるクラスのオブジェクトをオブジェクトとして扱うことができます。一般的なスーパークラス。 Java は、静的ポリモーフィズムと動的ポリモーフィズムという 2 つの主なメカニズムを通じてポリモーフィズムをサポートします。
静的ポリモーフィズム
静的ポリモーフィズムは、メソッドのオーバーロードとも呼ばれ、メソッドが 2 つ以上の場合に発生します。同じクラスには同じ名前がありますが、パラメータ リストが異なります。コンパイル中に、コンパイラは渡された引数の数と型に基づいてどのメソッドを呼び出すかを決定します。
例:
<code class="java">class Calculation { void sum(int a, int b) {} void sum(int a, int b, int c) {} } // Main method Calculation obj = new Calculation(); obj.sum(10, 10, 10); // 30 obj.sum(20, 20); // 40</code>
この例では、メソッドsum は 2 つの異なるパラメーター リストでオーバーロードされます。メソッドが 3 つの引数で呼び出される場合、コンパイラは 3 つのパラメータを持つ sum メソッドを選択します。逆に、メソッドが 2 つの引数で呼び出された場合、コンパイラは 2 つのパラメータを持つ sum メソッドを選択します。
動的多態性
動的多態性。メソッドのオーバーライドとも呼ばれます。異なるクラスの 2 つ以上のメソッドが同じ名前とシグネチャを持つ場合に発生します。実行時、仮想マシンはオブジェクトの実行時タイプに基づいて呼び出すメソッドを決定します。
例:
<code class="java">class Animal { public void move() {} } class Dog extends Animal { public void move() {} } // Main method Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object a.move(); // "Animals can move" b.move(); // "Dogs can walk and run"</code>
この例では、メソッドは移動します。 Dog クラスでオーバーライドされます。 Animal 参照 a で move メソッドが呼び出されると、move の Animal 実装が呼び出されます。ただし、Dog 参照 b で move メソッドが呼び出されると、move の Dog 実装が呼び出され、動的なポリモーフィズムが示されます。
以上がJava はどのようにして静的メカニズムと動的メカニズムの両方を備えたポリモーフィズムを実現するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。