父类卡子类卡java_Java中关于子类覆盖父类的抛出异常问题
Java中子類覆蓋父類方法拋出異常不能比父類多,這個表述不夠準確。
準確一點的描述為:
子類拋出的異常類型不能比父類拋出的異常類型更寬泛。假設(shè)父類拋出異常ParentException,另外有兩個子類繼承自ParentException分別為ChildException1, ChildException2, 那么 子類可以同時拋出異常ChildException1,ChildException2. 滿足“子類拋出的異常類型不能比父類拋出的異常類型更寬泛”,這一條件。
注重:
子類也可以選擇不進行拋出任何異常,即使他們是父類所定義的異常。
為什么Java設(shè)計成這樣,下面舉個例子進行分析:
package exceptions;
class Sick extends Exception{}
class FeverSick extends Sick{}
class JointSick extends Sick{}
class Children extends People{
public void coldAir() throws FeverSick{ }
}
class Adults extends People{
public void coldAir(){}
}
class Olds extends People{
public void coldAir() throws JointSick{ }
}
public class People {
public void coldAir() throws Sick{ }
}
如上代碼,定義了一個父類People類,以及其三個子類Children, Adults, Olds. 假設(shè)在父類中有一個冷空氣事件,那么它就會拋出一個Sick類型的異常。但是由于三個子類的抵抗疾病的能力不同,那么Adults類由于抵抗力較強,其方法可能不拋出異常。而Children和Adults類型,由于抵抗力較弱,可能拋出Sick類型的不同子類型。但是需要注重的是,子類不能拋出與Sick類完全不相關(guān)的異常類型,例如身高Height類型。因為必須把父類作為一個大前提,其子類不能拋出比父類異常更加出格的異常,否則無法進行識別。
大概就是這個意思。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)網(wǎng)上賣,謝謝大家對樂購源碼的支持。如果你想理解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的父类卡子类卡java_Java中关于子类覆盖父类的抛出异常问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java ajax无刷分页_asp.ne
- 下一篇: java矩阵三元组相减_实现稀疏矩阵(采