Java の動的ポリモーフィズムと静的ポリモーフィズムを理解する
Java のポリモーフィズムにより、異なるクラスのオブジェクトが、違いにもかかわらず同様に動作することが可能になります。この柔軟性は、動的ポリモーフィズムと静的ポリモーフィズムの 2 つのタイプによって実現されます。
動的ポリモーフィズム
実行時ポリモーフィズムとも呼ばれ、動的ポリモーフィズムは、サブクラスでメソッドのオーバーライドが行われるときに発生します。オーバーライド メソッドの呼び出しは、実際のオブジェクト タイプに基づいて実行時に解決されます。
次の例を考えてみましょう。
<code class="java">class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { @Override public void move() { System.out.println("Dogs can walk and run"); } } public class Main { public static void main(String[] args) { Animal animal = new Animal(); // Animal reference and object Animal dog = new Dog(); // Animal reference but Dog object animal.move(); // Output: Animals can move dog.move(); // Output: Dogs can walk and run } }</code>
この例では、move() メソッドが犬のクラス。動物参照が move() メソッドを呼び出すとき、オブジェクトの実際のタイプ (Animal または Dog) によって実行時の動作が決まります。これは動的ポリモーフィズムです。
静的ポリモーフィズム (メソッドのオーバーロード)
静的ポリモーフィズム (コンパイル時ポリモーフィズムとも呼ばれます) は、名前は同じだがパラメータ リストが異なる複数のメソッドが内部に存在する場合に発生します。同じクラスです。正しいメソッドの呼び出しは、渡された引数の数と型に基づいてコンパイル時に決定されます。
次の例を考えてみましょう。
<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 calculation = new Calculation(); calculation.sum(10, 10, 10); // Output: 30 calculation.sum(20, 20); // Output: 40 } }</code>
この例では、 sum()メソッドはさまざまなパラメーター リストでオーバーロードされています。正しい sum() メソッドの呼び出しは、渡された引数の数に基づいてコンパイル時に決定されます。これは静的ポリモーフィズムまたはメソッドのオーバーロードです。
以上がJava における動的ポリモーフィズムと静的ポリモーフィズムの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。