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