Java における動的ポリモーフィズムと静的ポリモーフィズムの違いは何ですか?

Mary-Kate Olsen
リリース: 2024-10-30 11:15:20
オリジナル
749 人が閲覧しました

What is the difference between dynamic and static polymorphism in Java?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!