Java中的overload VS override


一,overload:一般翻譯爲重載。當一個類中出現兩個或者兩個以上方法的名稱相同,方法的參數列表各不相同(即參數個數不同或者參數的類型不同)時,我們稱這些方法之間構成了重載關係。

1,滿足overload的幾個條件:

a,發生在同一個類的兩個或者兩個以上方法之間。

b,方法名稱相同,方法的參數列表不同(包括參數的個數不同或者參數的類型不同)。

2,重載對方法的返回值的類型不作要求,可以相同,也可以不同。

二,override:可以翻譯爲覆蓋、複寫、重寫。當子類中出現和父類一模一樣的方法時,子類對象調用該方法會運行子類方法的內容,如同父類的方法被覆蓋一樣。

1,滿足override的幾個條件:

a,發生在子類與父類之間。

b,子類中的方法與父類中要被覆蓋的方法一模一樣,包括方法名稱和方法的參數列表均要求相同。在jdk1.5版本以前,還要求方法的返回值類型與父類中被覆蓋的方法的返回值類型相同。從jdk1.5開始方法的返回值類型是父類中被覆蓋的方法的返回值類型的子類即可。

2,關於overrid的幾點注意事項:

a,覆蓋時,子類方法的權限必須大於或等於父類中被覆蓋方法的權限。

b,靜態方法只能覆蓋父類中的靜態方法,不能覆蓋父類中的非靜態方法。

c,子類不能覆蓋父類中被private或final修飾的方法。

d,子類覆蓋父類方法時,如果父類的方法拋出異常,那麼子類的覆蓋方法只能拋出父類的異常或者該異常的子異常。

e,如果父類的方法拋出多個異常,那麼子類在覆蓋父類方法時,要拋出父類方法異常的子集。

d,如果父類或者接口的方法中沒有異常拋出,那麼子類在覆蓋方法時,不可以拋出異常。如果子類發生了異常,必須在子類中進行try處理。


3,覆蓋的應用:

當子類需要父類的功能,但是功能主體子類有自己特有的內容時,可以複寫父類中的方法,這樣既沿襲了父類的功能,又定義了子類特有的內容。










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章