1. 子類在重寫父類的具有異常宣告的方法時,要麼不拋異常,要麼就丟擲跟父類方法相同的異常或該異常的子類。
2. 子類在重寫父類的具有異常宣告的方法的同時,又去實現了具有相同方法名稱的介面且該介面中的方法也具有異常宣告,則子類中的重寫的方法,要麼不丟擲異常,要麼丟擲父類中方法宣告異常與介面中方法宣告的異常的交集。例子如下:
class test
void test() throws ioexception
{}}inte***ce i1
class subtest extends test implements i1
void test() throws ioexception
{}}
在subtest類中,test方法要麼不丟擲異常,要麼丟擲ioexception或其子模擬如:interruptedioexception。
為什麼這樣設計呢?本人的理解是,當用子類去替換父類或者介面的型別,
1)當子類的方法不丟擲異常時,針對原父類或介面的方法的異常處理程式雖然不起作用了,但還是可以留在原處的,不傷大雅。
2)當子類的方法丟擲異常時,由於丟擲的異常只能是父類或介面中宣告的異常或者異常的子類,因此針對原有的父類或介面中的方法的異常處理程式仍然是有用的,異常處理程式能夠處理異常的子類。原因是子類就是父類,父類不一定是子類。
最後,還要提醒一點,子類構造器不能捕獲基類構造器丟擲的異常,只能在子類構造器中宣告其會丟擲基類構造器的異常或該異常的父類。如在subtest的無參構造器中,必須宣告丟擲ioexception或者ioexception的父類。此外subtest的無參構造器還可以宣告丟擲其他的異常如:nullpointerexception。
Java的方法重寫
方法重寫 override 也叫做方法覆蓋,它要求子類中方法的名字 引數個數 引數的型別和父類的方法完全不同。如果子類想使用被隱藏的方法或成員變數,必須使用關鍵字super。在jdk1.5版本之後,允許重寫方法的型別可以是父類方法的型別的子型別。如下 class a int f int a,int ...
java方法的重寫
1.目前的問題 父類的功能無法滿足子類的需求。2.方法重寫的前提 必須要存在繼承的關係。3.方法的重寫 子父類出了同名的函式,這個我們就稱作為方法的重寫。4.什麼是時候要使用方法的重寫 父類的功能無法滿足子類的需求時。5.方法重寫要注意的事項 1.方法重寫時,方法名與形參列表必須一致。2.方法重寫時...
Java方法的重寫
子類通過重寫父類的方法,可以用自身的行為替換父類的行為。方法的重寫是實現多型的必要條件。方法的重寫需要符合下面的三個要點 1.方法名 形參列表相同。2.返回值型別和宣告異常型別,子類小於等於父類。3.訪問許可權,子類大於等於父類。public class testoverride class veh...