ホームページ  >  記事  >  Java  >  Java ではメソッドのオーバーライドとメソッドのオーバーロードはどのように異なりますか?

Java ではメソッドのオーバーライドとメソッドのオーバーロードはどのように異なりますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 20:08:30450ブラウズ

How do Method Overriding and Method Overloading Differ in Java?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。