子類重寫父類的方法,父類沒有異常,子類可以拋異常嗎

2021-03-19 18:19:52 字數 832 閱讀 6489

1樓:匿名使用者

這就是java的重寫規則。

對於異常重寫方法不能丟擲新的異常或者比被重寫方法宣告的檢查異常更廣的檢查異常。但是可以丟擲更少,更有限或者不丟擲異常。

重寫規則之一:重寫方法不能比被重寫方法限制有更嚴格的訪問級別。

(但是可以更廣泛,比如父類方法是包訪問許可權,子類的重寫方法是public訪問許可權。) 比如:object類有個tostring()方法,開始重寫這個方法的時候我們總容易忘記public修飾符,編譯器當然不會放過任何教訓我們 的機會。

出錯的原因就是:沒有加任何訪問修飾符的方法具有包訪問許可權,包訪問許可權比public當然要嚴格了,所以編譯器會報錯的。

重寫規則之二: 引數列表必須與被重寫方法的相同。

重寫有個孿生的弟弟叫過載,也就是後面要出場的。如果子類方法的引數與父類對應的方法不同,那麼就是你認錯人了,那是過載,不是重寫。

重寫規則之三:返回型別必須與被重寫方法的返回型別相同。

父類方法a:void eat(){} 子類方法b:int eat(){} 兩者雖然引數相同,可是返回型別不同,所以不是重寫。

父類方法a:int eat(){} 子類方法b:long eat(){} 返回型別雖然相容父類,但是不同就是不同,所以不是重寫。

重寫規則之四:重寫方法不能丟擲新的異常或者比被重寫方法宣告的檢查異常更廣的檢查異常。但是可以丟擲更少,更有限或者不丟擲異常。

注意:這種限制只是針對檢查異常,至於執行時異常runtimeexception及其子類不再這個限制之中。

重寫規則之五: 不能重寫被標識為final的方法。

重寫規則之六:如果一個方法不能被繼承,則不能重寫它。如private方法

Python子類呼叫父類方法或子類定義的方法輸出會多出個None

我覺得最佳的回答的是不對的,在python中若是函式沒有定義return的結果,則會預設返回一個none def func a 1 b 2 a func print a none 在官方文件中也有說明的,而你列印出none的原因就是因為你在類的方法 中直接列印了字串沒有返回值,將方法中的pring改...

簡述在類的繼承關係中,子類可以繼承父類的有哪些成員

子類不能從父類繼承的有 1.建構函式 2.拷貝建構函式 3.解構函式 子類能從父類繼承的有 1 靜態成員變數 2 靜態成員函式 3 友元函式 4 賦值操作符 過載函式 子類和父類在同一個包中時,子類可以繼承父類的除private屬性的所有方法和成員變數,當子類與 父類不在同一個包中時,子類只能繼承父...

php寫函式 根據子類 id 遞迴查詢頂級父類 id返回

使用tp5寫的函式,求出父親id,最後再將第一個傳入的父類id和函式的返回值拼接起來,然後通過查資料庫求出名字,當然自己簡化一下也可以一步求出父類的名字 public function getchild pid return ids 你肯定得是兩張表吧 一張是 table1 id name pid ...