推薦答案
Java 中的重載(Overloading)和重寫(Overriding)是兩種不同的概念,用于實現不同類型的多態性。
重載(Overloading):
重載指的是在同一個類中定義了多個方法,它們具有相同的方法名但不同的參數列表。參數列表包括參數的個數、類型或順序,但不能僅僅是返回類型不同。編譯器通過根據方法調用時傳遞的參數數量、類型或順序來選擇相應的方法進行調用。重載方法之間的區分是在編譯時確定的。
例如:
public class MyClass {
public void print(int num) {
System.out.println("int: " + num);
}
public void print(String str) {
System.out.println("String: " + str);
}
public void print(double num1, double num2) {
System.out.println("double: " + num1 + ", " + num2);
}
}
在上面的例子中,MyClass 類中定義了三個名為 print 的方法,它們的參數列表不同,分別接受一個 int、一個 String 和兩個 double 類型的參數,這就是方法的重載。
重寫(Overriding):
重寫指的是子類重新定義了父類中具有相同方法名、方法簽名(包括方法名、參數列表和返回類型)的方法。在繼承關系中,子類可以對父類中的方法進行覆蓋,使得在子類對象調用該方法時執行子類中的實現邏輯,而不是父類中的實現邏輯。重寫是運行時多態性的一種體現,因為在運行時根據對象的實際類型來決定調用哪個方法。
例如:
public class Animal {
public void makeSound() {
System.out.println("Animal makes sound");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Cat makes meow");
}
}
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog makes woof");
}
}
在上面的例子中,Animal 類定義了一個名為 makeSound 的方法,Cat 和 Dog 類繼承自 Animal 類,并分別重寫了 makeSound 方法。當創建 Cat 對象調用 makeSound 方法時,會執行 Cat 類中的實現邏輯;當創建 Dog 對象調用 makeSound 方法時,會執行 Dog 類中的實現邏輯。這就是方法的重寫。
其他答案
-
Java 中的方法重載(Overloading)是指在同一個類中可以定義多個方法,它們具有相同的方法名但參數列表不同(包括參數的個數、類型或順序)。編譯器通過根據方法調用時傳遞的參數來選擇相應的方法進行調用。方法重載的特點包括:方法名相同:在同一個類中,可以定義多個方法,它們的方法名相同。參數列表不同:重載的方法必須有不同的參數列表,包括參數的個數、類型或順序,至少有一個參數不同。返回類型不同不足以構成重載:僅僅返回類型不同的方法不能構成重載,因為編譯器無法根據返回類型來確定調用哪個方法。
-
Java 中的方法重寫(Overriding)是指子類重新定義了父類中具有相同方法名、方法簽名(包括方法名、參數列表和返回類型)的方法。在繼承關系中,子類可以對父類中的方法進行覆蓋,使得在子類對象調用該方法時執行子類中的實現邏輯,而不是父類中的實現邏輯。方法重寫的特點包括:方法名、參數列表和返回類型相同:子類重寫的方法必須與父類中被重寫的方法具有相同的方法名、參數列表和返回類型。修飾符不能更加嚴格:子類重寫的方法的訪問修飾符不能比父類中被重寫的方法的訪問修飾符更加嚴格,例如,如果父類中的方法為 public,那么子類中的重寫方法也必須為 public。子類拋出的異常不能比父類更多:子類重寫的方法不能拋出比父類中被重寫的方法更多的異常,可以拋出相同的異?;蛘卟粧伋霎惓!7椒w覆蓋:子類重寫的方法需要提供新的實現邏輯,即子類中的方法體會覆蓋父類中的方法體。