久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

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

手機(jī)站
千鋒教育

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

千鋒教育

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

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

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

當(dāng)前位置:首頁(yè)  >  千鋒問(wèn)問(wèn)  > java的重載和重寫(xiě)

java的重載和重寫(xiě)

匿名提問(wèn)者 2023-04-07 16:58:19

我要提問(wèn)

推薦答案

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

  重載(Overloading):

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

  例如:

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 類(lèi)中定義了三個(gè)名為 print 的方法,它們的參數(shù)列表不同,分別接受一個(gè) int、一個(gè) String 和兩個(gè) double 類(lèi)型的參數(shù),這就是方法的重載。

  重寫(xiě)(Overriding):

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

  例如:

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 類(lèi)定義了一個(gè)名為 makeSound 的方法,Cat 和 Dog 類(lèi)繼承自 Animal 類(lèi),并分別重寫(xiě)了 makeSound 方法。當(dāng)創(chuàng)建 Cat 對(duì)象調(diào)用 makeSound 方法時(shí),會(huì)執(zhí)行 Cat 類(lèi)中的實(shí)現(xiàn)邏輯;當(dāng)創(chuàng)建 Dog 對(duì)象調(diào)用 makeSound 方法時(shí),會(huì)執(zhí)行 Dog 類(lèi)中的實(shí)現(xiàn)邏輯。這就是方法的重寫(xiě)。

其他答案

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

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