當使用override修改父類別的方法, 有下列幾點限制:
- 方法名稱不能修改.(改了就是新增方法而不是覆寫了!)
- 若父類別的方法有丟出例外時, 子類別也必須丟出此例外或該例外之子類別.
- 子類別方法所傳回值之型態須與父類別方法一樣. (若更改傳回值之型態, 這樣就是overload了吧!)
- 子類別方法之修飾詞權限不得小於父類別. (繼承的用意就是希望孩子變強, 那有變弱的道理!)
- 若父類別之方法設定為final, 子類別不能修改該方法. (廢言, 都已經是final怎麼改寫)
- 若父類別之方法宣告為static, 子類別不可將其宣告為non-static, 反之亦然.
以下情況皆為重新定義非覆寫:
- 修改父類別之靜態方法
- 修改父類別之private方法
沒有留言:
張貼留言