在Java中,重寫(Override)和重載(Overload)是兩種不同的概念:
- 重寫(Override):
- 重寫是指子類重新定義(覆蓋)了從父類繼承而來的方法。
- 重寫要求子類方法與父類方法具有相同的方法名、參數列表和返回類型。
- 重寫可以修改或擴展父類方法的功能,但不能改變方法的簽名。
- 重寫可以利用多態性,在運行時根據對象的實際類型調用對應的方法。
示例代碼:
class Animal {public void makeSound() {System.out.println("Animal makes sound");}
}class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("Dog barks");}
}Animal animal = new Dog();
animal.makeSound(); // 輸出:"Dog barks"
- 重載(Overload):
- 重載是指在同一個類中,可以定義多個同名但參數列表不同的方法。
- 重載方法的特點是參數個數、類型或順序不同。
- 編譯器根據方法的參數列表決定調用哪個重載方法。
- 重載可以提供更靈活的方法調用方式,方便處理不同情況下的不同邏輯操作。
示例代碼:
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)
通過重寫和重載,可以實現代碼的靈活性和可擴展性。重寫用于在子類中修改父類方法的行為
,實現特定的邏輯;重載用于定義多個相似功能但參數不同的方法
,提供更多選擇。