一、Java重寫與重載的區(qū)別
1、含義不同
方法重寫指的是在子類中重新定義一個(gè)與父類方法同名、參數(shù)列表相同的方法。子類中的方法覆蓋了父類中的同名方法,調(diào)用時(shí)會(huì)執(zhí)行子類中的方法。方法重載指的是在同一個(gè)類中定義多個(gè)方法,它們的方法名相同,但是參數(shù)列表不同。
2、參數(shù)列表不同
方法重載的參數(shù)列表必須不同,可以是參數(shù)類型不同,參數(shù)個(gè)數(shù)不同或者參數(shù)順序不同。而方法重寫的參數(shù)列表必須和父類方法的參數(shù)列表完全一致,包括參數(shù)類型、個(gè)數(shù)、順序等。
3、返回值限制不同
方法重載可以有不同的返回值類型,但是不能只有返回值類型不同,其余參數(shù)相同的方法。而方法重寫必須和父類方法具有相同的返回值類型,或者是其子類的返回值類型。
4、方法調(diào)用不同
方法重載是在編譯時(shí)確定的,根據(jù)參數(shù)的不同,選擇不同的方法進(jìn)行調(diào)用。而方法重寫是在運(yùn)行時(shí)確定的,當(dāng)父類引用指向子類對(duì)象時(shí),調(diào)用同名方法時(shí)會(huì)執(zhí)行子類中的方法。
5、繼承關(guān)系不同
方法重載是在同一個(gè)類中定義多個(gè)方法,它們是平級(jí)關(guān)系,沒有繼承關(guān)系。而方法重寫是在子類中對(duì)父類方法進(jìn)行覆蓋,有繼承關(guān)系。
6、注解不同
方法重載可以使用相同或不同的注解進(jìn)行修飾,而方法重寫必須使用@override注解,否則編譯器會(huì)發(fā)出警告。