Java では、オーバーライドとオーバーロードは 2 つの異なる概念です。
- オーバーライド:
- オーバーライドとは、サブクラスが親クラスから継承したメソッドを再定義 (オーバーライド) することを意味します。
- オーバーライドするには、サブクラス メソッドのメソッド名、パラメーター リスト、戻り値の型が親クラス メソッドと同じである必要があります。
- オーバーライドにより、親クラス メソッドの機能を変更または拡張できますが、メソッドのシグネチャを変更することはできません。
- オーバーライドではポリモーフィズムを利用し、実行時にオブジェクトの実際の型に基づいて対応するメソッドを呼び出すことができます。
サンプルコード:
class Animal {
public void makeSound() {
System.out.println("Animal makes sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
Animal animal = new Dog();
animal.makeSound(); // 输出:"Dog barks"
- 過負荷:
- オーバーロードとは、同じクラス内で、名前は同じだがパラメーター リストが異なる複数のメソッドを定義できることを意味します。
- オーバーロードされたメソッドの特徴は、パラメーターの数、型、または順序が異なることです。
- コンパイラは、メソッドのパラメータ リストに基づいて、どのオーバーロードされたメソッドを呼び出すかを決定します。
- オーバーロードを使用すると、メソッドを呼び出すためのより柔軟な方法が提供され、さまざまな状況でさまざまな論理操作を簡単に処理できるようになります。
サンプルコード:
class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
Calculator calculator = new Calculator();
int result1 = calculator.add(5, 3); // 调用 int add(int a, int b)
double result2 = calculator.add(2.5, 4.7); // 调用 double add(double a, double b)
書き換えとオーバーロードを通じて、コードの柔軟性と拡張性を実現できます。重写用于在子类中修改父类方法的行为
、特定のロジックを実装し、重载用于定义多个相似功能但参数不同的方法
より多くの選択肢を提供します。