Java における動的ポリモーフィズムと静的ポリモーフィズムの区別
Java を使用したオブジェクト指向プログラミングでは、動的ポリモーフィズムと静的ポリモーフィズムの違いを理解することが重要です。この記事では、この概念を説明するための簡略化された説明と例を提供します。
動的ポリモーフィズムと静的ポリモーフィズム
ポリモーフィズムを使用すると、メソッドに応じて 1 つのメソッド名に複数の実装を含めることができます。それを呼び出すオブジェクトタイプ。ポリモーフィズムには主に 2 つのタイプがあります:
メソッドのオーバーロード
メソッドのオーバーロードは、複数のメソッドが存在する静的ポリモーフィズムの一種です。同じクラス内に同じ名前のメソッドが存在しますが、パラメータが異なります。オーバーロードされたメソッドを呼び出すとき、Java は、渡された引数の数と型に基づいて、呼び出す適切なメソッドを決定します。
コード例 (メソッドのオーバーロード):
<code class="java">class Calculation { void sum(int a, int b) { System.out.println(a + b); } void sum(int a, int b, int c) { System.out.println(a + b + c); } public static void main(String[] args) { Calculation obj = new Calculation(); obj.sum(10, 10, 10); // Output: 30 obj.sum(20, 20); // Output: 40 } }</code>
メソッドのオーバーライド
メソッドのオーバーライドは、同じ名前とシグネチャを持つメソッドが異なるクラスで宣言されますが、共通の親クラスを共有する動的ポリモーフィズムの一種です。オーバーライドされたメソッドを呼び出す場合、Java は実行時のオブジェクトの実際のクラスに基づいて呼び出すメソッドを決定します。
コード例 (メソッドのオーバーライド):
<code class="java">class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { public void move() { System.out.println("Dogs can walk and run"); } } public class TestDog { public static void main(String[] args) { Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object a.move(); // Output: Animals can move b.move(); // Output: Dogs can walk and run } }</code>
以上がJava ではメソッドのオーバーライドとメソッドのオーバーロードはどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。