ホームページ > Java > &#&チュートリアル > Java はどのようにして静的メカニズムと動的メカニズムの両方を備えたポリモーフィズムを実現するのでしょうか?

Java はどのようにして静的メカニズムと動的メカニズムの両方を備えたポリモーフィズムを実現するのでしょうか?

Mary-Kate Olsen
リリース: 2024-10-30 01:12:28
オリジナル
648 人が閲覧しました

How Does Java Achieve Polymorphism with Both Static and Dynamic Mechanisms?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート