国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Exception在方法繼承中的限制

2019-11-15 01:09:50
字體:
供稿:網(wǎng)友
Exception在方法繼承中的限制

問題:

父類或接口中定義了方法應(yīng)該拋出的異常,那么當(dāng)子類重寫方法時(shí)應(yīng)該怎樣定義將要拋出的異常:

首先定義異常和父類:

1 class Exception1 extends Exception {}2 class Exception2 extends Exception {}3 class Exception3 extends Exception {}4 class Exception1_1 extends Exception1 {}5 class Exception2_1 extends Exception2 {}6 class Exception3_1 extends Exception3 {}7 class SuperClass {8     public void method1() throws Exception1 , Exception2 , Exception3 {}9 }

正確的方法覆蓋:

1. 子類方法只能拋出父類異常的子集合:

1 public class TestExceptionLimit extends SuperClass {2     @Override3     public void method1() {}4 }
public class TestExceptionLimit extends SuperClass {    @Override    public void method1() throws Exception1 {}}
1 public class TestExceptionLimit extends SuperClass {2     @Override3     public void method1() throws Exception1 , Exception2 , Exception3 {}4 }

上面三種都可以。

2. 子類可以拋出父類異常的導(dǎo)出類:

1 public class TestExceptionLimit extends SuperClass {2     @Override3     public void method1() throws Exception1_1 , Exception2_1 {}4 }

3. 還有一種特殊的情形,當(dāng)子類同時(shí)繼承一個(gè)父類和實(shí)現(xiàn)一個(gè)接口,而且這個(gè)父類和接口同時(shí)定義了簽名一樣的方法,但是拋出異常不一樣,那么子類應(yīng)該怎樣定義自己的方法異常:

新的代碼:

1 class Exception4 extends Exception {}2 class Exception5 extends Exception {}3 4 class SuperClass {5     public void method1() throws Exception4{}6 }7 interface TestInterface {8     public void method1() throws Exception5 ;9 }

正確的覆蓋:

1 public class TestExceptionLimit extends SuperClass implements TestInterface {2     @Override3     public void method1(){}4 }

注意:不要拋出任何異常,下面可以證明:

1 public class TestExceptionLimit extends SuperClass implements TestInterface {2     @Override3     public void method1() throws Exception4 {}4 }

這段代碼編碼會(huì)出錯(cuò),錯(cuò)誤信息為:Exception Exception4 is not compatible with throws clause in TestInterface.method1()。表示和接口定義的異常不匹配,如果你嘗試拋出Exception5它又會(huì)告訴你和父類定義的異常不匹配,所以不寫還不行嘛--!,java設(shè)計(jì)者們還是挺人性化的~~~


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 伊川县| 右玉县| 三河市| 怀来县| 洛川县| 天峨县| 房山区| 安吉县| 岐山县| 喀喇沁旗| 漳州市| 浮梁县| 静海县| 固阳县| 东阳市| 永宁县| 荣成市| 建宁县| 渭南市| 察隅县| 赣州市| 宜兰县| 志丹县| 上高县| 西林县| 娱乐| 南京市| 安陆市| 深州市| 唐海县| 象州县| 乐平市| 关岭| 阜康市| 亚东县| 津市市| 泸水县| 威远县| 通海县| 墨玉县| 岑溪市|