java 繼承、重載、重寫與多態
首先是java 繼承、重載和重寫的概念
繼承:
繼承的作用在於代碼的復用。由於繼承意味著父類的所有方法亦可在子類中使用,所以發給父類的消息亦可發給衍生類。如果Person類中有一個eat方法,那麽Student類中也會有這個方法,這意味著Student對象也是Person的一種類型。
繼承可以基於已經存在的類構造一個新類。繼承已經存在的類就可以復用這些類的方法和域。在此基礎上,可以添加新的方法和域,從而擴充了類的功能。
方法重載:
java允許在一個類中,多個方法擁有相同的名字,但在名字相同的同時,必須有不同的參數,這就是重載。
編譯時編譯器會根據實際情況挑選出正確的方法,如果編譯器找不到匹配的參數或者找出多個可能的匹配就會產生編譯時錯誤,這個過程被稱為重載的解析
重載規則:
(一)再使用方法重載的時候,必須通過方法中不同的參數列表來實現方法的重載。如:方法的參數個數不同或者方法的參數類型不同。
(二)不能通過訪問權限,返回值類型和拋出的異常來實現重載
(三)方法的異常類型和拋出異常的數目不會影響方法的重載,也就是說重載的方法中允許拋出不同的異常
(四)可以有不同的返回值類型,只要方法的參數列表不同即可
(五)可以有不同的訪問修飾符
方法重寫:
Java程序中類的繼承特性可以產生一個子類,子類繼承父類就擁有了父類的非私有的屬性(方法和變量),在子類中可以增加自己的屬性(方法和變量),同時也可以對父類中的方法進行擴展,以增強自己的功能,這樣就稱之為重寫,也稱為復寫或者覆蓋。
重寫規則:
在進行方法重寫的時候需要遵循以下規則才能實現方法重寫:
(一)子類方法的參數列表必須和父類中被重寫的方法的參數列表相同(參數個數和參數類型),否則只能實現方法的重載。
(二)子類方法的返回值類型必須和父類中被重寫的方法返回值類型相同,否則只能實現方法重載。
(三)在Java規定,子類方法的訪問權限不能比父類中被重寫的方法的訪問權限更小,必須大於或等於父類的訪問權限。
(四)在重寫的過程中,如果父類中被重寫的方法拋出異常,則子類中的方法也要拋出異常。但是拋出的異常也有一定的約束--->子類不能拋出比父類更多的異常,只能拋出比父類更小的異常,或者不拋出異常。
例如:父類方法拋出Exception,那麽子類就只能拋出IOException或者拋出比Exception小的異常或者不拋出異常。
重載與重寫的區別:
區別點 |
重載 |
重寫(覆寫) |
英文 |
Overloading |
Overiding |
定義 |
方法名稱相同,參數的類型或個數不同 |
方法名稱、參數類型、返回值類型全部相同 |
對權限沒有要求 |
被重寫的方法不能擁有更嚴格的權限 |
|
範圍 |
發生在一個類中 |
發生在繼承類中 |
java 繼承、重載、重寫與多態