在Java中,重載(overloading)和重寫(overriding)是兩個不同的概念,它們的應用場景也不同。
重載是指在同一個類中定義了多個方法,它們的方法名相同但參數列表不同。重載的目的是方便程序員,使得程序代碼更加簡潔,更易讀懂。
重寫是指子類重寫了父類的方法,方法名和參數列表都相同。重寫的目的是為了改變父類方法的行為,實現多態性。
下面是一些示例代碼:
重載的例子:
public class OverloadExample {
public void print(int i) {
System.out.println("Integer: " + i);
}
public void print(double d) {
System.out.println("Double: " + d);
}
public void print(String s) {
System.out.println("String: " + s);
}
}
// 在其他類中使用 OverloadExample 中的方法
OverloadExample oe = new OverloadExample();
oe.print(1);
oe.print(2.0);
oe.print("hello");
上述代碼中,OverloadExample 類中定義了三個方法,分別使用了不同的參數類型。在其他類中,可以通過對象oe調用這些方法,Java會根據傳入的參數類型選擇合適的方法進行調用。
重寫的例子:
public class Animal {
public void speak() {
System.out.println("I am an animal");
}
}
public class Cat extends Animal {
@Override
public void speak() {
System.out.println("I am a cat");
}
}
// 在其他類中使用 Cat 中的方法
Animal animal = new Cat();
animal.speak();
上述代碼中,Animal類中定義了一個speak方法,Cat類繼承了Animal類并重寫了speak方法。在其他類中,可以創建一個Cat對象,并將其賦值給Animal類型的變量animal。調用animal的speak方法時,實際上調用的是 Cat類中重寫的speak方法。這就體現了多態性的特點。