千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  千鋒問問  > java的重載和重寫

java的重載和重寫

匿名提問者 2023-04-07 16:58:19

我要提問

推薦答案

  Java 中的重載(Overloading)和重寫(Overriding)是兩種不同的概念,用于實(shí)現(xiàn)不同類型的多態(tài)性。

  重載(Overloading):

  重載指的是在同一個類中定義了多個方法,它們具有相同的方法名但不同的參數(shù)列表。參數(shù)列表包括參數(shù)的個數(shù)、類型或順序,但不能僅僅是返回類型不同。編譯器通過根據(jù)方法調(diào)用時傳遞的參數(shù)數(shù)量、類型或順序來選擇相應(yīng)的方法進(jìn)行調(diào)用。重載方法之間的區(qū)分是在編譯時確定的。

  例如:

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 的方法,它們的參數(shù)列表不同,分別接受一個 int、一個 String 和兩個 double 類型的參數(shù),這就是方法的重載。

  重寫(Overriding):

  重寫指的是子類重新定義了父類中具有相同方法名、方法簽名(包括方法名、參數(shù)列表和返回類型)的方法。在繼承關(guān)系中,子類可以對父類中的方法進(jìn)行覆蓋,使得在子類對象調(diào)用該方法時執(zhí)行子類中的實(shí)現(xiàn)邏輯,而不是父類中的實(shí)現(xiàn)邏輯。重寫是運(yùn)行時多態(tài)性的一種體現(xiàn),因為在運(yùn)行時根據(jù)對象的實(shí)際類型來決定調(diào)用哪個方法。

  例如:

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 方法。當(dāng)創(chuàng)建 Cat 對象調(diào)用 makeSound 方法時,會執(zhí)行 Cat 類中的實(shí)現(xiàn)邏輯;當(dāng)創(chuàng)建 Dog 對象調(diào)用 makeSound 方法時,會執(zhí)行 Dog 類中的實(shí)現(xiàn)邏輯。這就是方法的重寫。

其他答案

  •   Java 中的方法重載(Overloading)是指在同一個類中可以定義多個方法,它們具有相同的方法名但參數(shù)列表不同(包括參數(shù)的個數(shù)、類型或順序)。編譯器通過根據(jù)方法調(diào)用時傳遞的參數(shù)來選擇相應(yīng)的方法進(jìn)行調(diào)用。方法重載的特點(diǎn)包括:方法名相同:在同一個類中,可以定義多個方法,它們的方法名相同。參數(shù)列表不同:重載的方法必須有不同的參數(shù)列表,包括參數(shù)的個數(shù)、類型或順序,至少有一個參數(shù)不同。返回類型不同不足以構(gòu)成重載:僅僅返回類型不同的方法不能構(gòu)成重載,因為編譯器無法根據(jù)返回類型來確定調(diào)用哪個方法。

  •   Java 中的方法重寫(Overriding)是指子類重新定義了父類中具有相同方法名、方法簽名(包括方法名、參數(shù)列表和返回類型)的方法。在繼承關(guān)系中,子類可以對父類中的方法進(jìn)行覆蓋,使得在子類對象調(diào)用該方法時執(zhí)行子類中的實(shí)現(xiàn)邏輯,而不是父類中的實(shí)現(xiàn)邏輯。方法重寫的特點(diǎn)包括:方法名、參數(shù)列表和返回類型相同:子類重寫的方法必須與父類中被重寫的方法具有相同的方法名、參數(shù)列表和返回類型。修飾符不能更加嚴(yán)格:子類重寫的方法的訪問修飾符不能比父類中被重寫的方法的訪問修飾符更加嚴(yán)格,例如,如果父類中的方法為 public,那么子類中的重寫方法也必須為 public。子類拋出的異常不能比父類更多:子類重寫的方法不能拋出比父類中被重寫的方法更多的異常,可以拋出相同的異?;蛘卟粧伋霎惓?。方法體覆蓋:子類重寫的方法需要提供新的實(shí)現(xiàn)邏輯,即子類中的方法體會覆蓋父類中的方法體。