六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Java編程思想讀書筆記(10章下)

[摘要]四. 繼承中異常   1. 關于構造函數中的異常    1.1 構造函數中的異常規則    某個derivedclass構造函數的“異常規格接口“可以比其所調用的父類的構造函數的異常規格接口寬,但決不能變窄。    1) derivedclass的構造函數必須在自己的異常規格中聲明所有basecl...
四. 繼承中異常

  1. 關于構造函數中的異常

   1.1 構造函數中的異常規則

   某個derivedclass構造函數的“異常規格接口“可以比其所調用的父類的構造函數的異常規格接口寬,但決不能變窄。

   1) derivedclass的構造函數必須在自己的異常規格中聲明所有baseclass構造函數的異常規格中所聲明的異常。

   2) 在derivedclass的構造函數的異常規格中還可以聲明新的異常,即聲明在baseclass構造函數的異常規格中沒有聲明的異常。

   1.2 原因

   當在產生一個derivedclass的對象時,會在derivedclass的構造函數中調用baseclass的構造函數(初始化過程請見第6章),所以在derivedclass的構造函數中可能會拋出baseclass構造函數的異常規格中聲明的異常,因此要在derivedclass的異常規格中聲明baseclass構造函數的異常規格中聲明的異常。

   **:如果調用的函數的異常規格中聲明了異常,那么在調用該函數的時候要捕捉它的異常規格中聲明的異常。但在derivedclass構造函數中卻無法捕捉其baseclass構造函數所擲出的異常。

   2. 關于非構造函數的異常規則

   2.1 某個函數的“異常規格接口“在繼承和重載中可以變窄,但決不能變寬

   要覆寫baseclass的函數時,如果被覆寫函數(baseclass中的函數)的異常規格中聲明了異常,那么覆寫函數(derivedclass中覆寫了baseclass中的函數的那個函數)的異常規格中可以聲明(1)與被覆寫函數完全相同的異常;(2)被覆寫函數異常規格中的部分異常或其子類異常;(3)不聲明異常規格。

   2.2 原因

   這么做是為了滿足“能處理被覆寫函數的代碼,不用做任何修改就能處理覆寫函數的代碼”的原則。

   如果覆寫函數的異常規格中聲明了在被覆寫函數的異常規格中不存在的異常,那么能處理被覆寫函數的代碼就不能處理覆寫函數,因為沒有捕捉覆寫函數中不存在于被覆寫函數中的異常聲明。

   import java.sql.SQLException;
   class BaseClass{
   public void f(){}
   }
   class DerivedClass1 extends BaseClass{
   //public void f() throws SQLException {}(1)

   public void f() {}//(2)

   }
   public class Test{
   public static void f(BaseClass bc) { bc.f(); }
   /*(3)

   public static void f(BaseClass bc) {
   try{
   bc.f();
   }
   catch(SQLException ex){}
   }
   */
   public static void main(String[] args){
   BaseClass bc = new BaseClass();
   f(bc);
   DerivedClass1 dc = new DerivedClass1();
   f(bc);
   }
   }
   如果允許“異常接口“變寬,我們看看上面代碼會出現什么結果。首先,我們可以將代碼(1)的注釋去掉,并注釋掉代碼(2)。由于BaseClassclass中的被覆寫f()函數沒有聲明異常規格,而代碼(1)中覆寫f()函數聲明了,那么Testclass中的f(BaseClass bc)雖然能處理被覆寫f()函數的調用,但不能處理覆寫f()函數的調用,因為代碼覆寫f()函數聲明了異常規格,而f(BaseClass bc)沒有進行捕捉。那么為了處理覆寫f()函數,我們還要編寫代碼(3)那樣的處理函數。

   2.3 產生對象的異常規則

   在產生一個對象時,捕捉的是產生對象時所調用的構造函數中所聲明的異常。

   2.4 函數調用時的異常規則

   1) 當把一個對象向上轉型為它的baseclass時,并通過轉型后的reference進行函數調用時,我們要捕捉的是其baseclass的異常聲明。

   2) 當用對象的原始類型來調用函數時,只需捕捉所調用的覆寫函數的異常



主站蜘蛛池模板: 青娱乐在线视频免费观看 | 又粗又硬又大又爽免费观看 | 色综合久久中文综合网 | 日韩精品网 | 色播放| 欧美一级视频在线观看 | 日韩毛片在线播放 | 日韩永久在线观看免费视频 | 亚洲观看视频 | 天天躁天天弄天天爱 | 在线精品免费观看综合 | 欧美性受xxxx黑人xyx性爽 | 特片伦理在线网站 | 伊人精品视频 | 欧美一区二区三区播放 | 天天操天天干天天玩 | 亚洲日本免费 | 亚洲精品乱码久久久久久麻豆 | 亚洲欧洲一区二区三区在线 | 日本精品a在线观看 | 在线资源天堂 | 五福影院在线观看 | 日日摸夜夜爽人人添 | 三级黄色免费 | 欧美一级黄色录像 | 欧美特级午夜一区二区三区 | 天天干天天爱天天射 | 视频在线免费高清 | 日韩精品 欧美 | 欧美亚洲国产一区二区 | 伊香蕉大综综综合久久 | 自拍视频在线播放 | 青青草影院在线观看 | 亚洲日韩在线视频 | 欧美亚洲国产视频 | 色视在线| 人人看人人干 | 亚洲va欧美va国产综合下载 | 亚洲视频在线免费播放 | 三级黄免费 | 日本免费成人网 |