Java における動的ポリモーフィズムと静的ポリモーフィズムの区別
動的ポリモーフィズムと静的ポリモーフィズムの違いを理解することは、Java を使用したオブジェクト指向プログラミングにおいて非常に重要です。この記事では、この概念を説明するための簡略化された説明と例を提供します。
動的ポリモーフィズムと静的ポリモーフィズム
ポリモーフィズムにより、単一のメソッド名に、必要に応じて複数の実装を持たせることができます。それを呼び出すオブジェクトタイプ。ポリモーフィズムには主に 2 つのタイプがあります:
メソッドのオーバーロード
メソッドのオーバーロードは、複数のメソッドが存在する静的多態性の一種です。同じクラス内に同じ名前のメソッドが存在しますが、パラメータが異なります。オーバーロードされたメソッドを呼び出すとき、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
}
}
メソッド オーバーライド
メソッド オーバーライドは、同じ名前とシグネチャを持つメソッドが異なるクラスで宣言されますが、共通の親クラスを共有する動的ポリモーフィズムの一種です。オーバーライドされたメソッドを呼び出すとき、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
}
}
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3