1. 程式人生 > >《Java程式設計》第七章學習總結

《Java程式設計》第七章學習總結

201711671111 《Java程式設計》第七章學習總結

1.內部類

  • JAVA支援在一個類中定義另一個類,這樣的類稱作內部類,而包含內部類的類稱為內部類的外嵌類。
  • 內部類和外嵌類關係如下:①內部類的外嵌類的成員變數在內部類中仍然有效,內部類中的方法也可以呼叫外嵌類中的方法。②內部類的類體不可以宣告類變數和類方法。外嵌類場地類體可以用內部類宣告物件,作為外嵌類的成員。③內部類僅供它的外嵌類使用,其他類不可以用某個類的內部類宣告物件。
  • 外嵌類和內部類在編譯時,生成兩個.class檔案。 
  • 內部類的類體中不可以宣告類變數和類方法。外嵌類的類體中可以用內部類宣告物件,作為外嵌類的成員。

2.匿名類

  • Java允許我們直接使用一個類的子類的類體建立一個子類物件。
  • 建立子類物件時,除了使用父類的構造方法外還有類體,此類體被認為是一個子類去掉類聲明後的類體,稱作匿名類。
  • 匿名類有如下特點:①匿名類可以繼承父類的方法也可以重寫父類的方法。②匿名類一定是內部類。③匿名類可以訪問外嵌類中的成員變數和方法,匿名類的類體中不可以宣告static成員變數和static方法。④由於匿名類是一個子類,但沒有類名,所以在用匿名類建立物件時,要直接使用父類的構造方法。

3.與介面有關的匿名類

  • 假設Computable是一個介面,那麼,Java允許直接用介面名和一個類體建立一個匿名物件,此類體被認為是實現了
    Computable介面的類去掉類聲明後的類體,稱作匿名類。
  • 下列程式碼就是用實現了Computable介面的類(匿名類)建立物件:

      new Computable() {

            實現介面的匿名類的類體

       } ;

  • 如果某個方法的引數是介面型別,那麼可以使用介面名和類體組合建立一個匿名物件傳遞給方法的引數,類體必須重寫介面中的全部方法。

4.異常類

  • 所謂異常就是程式執行時可能出現一些錯誤。Java允許定義方法時宣告該方法呼叫過程中可能出現異常,既允許方法呼叫過程中丟擲異常物件,終止當前方法的繼續執行。
  • Java使用throw關鍵字跑出一個Exception子類的例項比搜地異常發生。

 

  • 異常物件可以呼叫如下方法得到或輸出有關異常的資訊:

              – public String getMessage();

              – public void printStackTrace();

              – public String toString();

5.try-catch語句

 

  • Java使用try~catch語句來處理異常,將可能出現的異常操作放在try~catch語句的try部分,將發生異常後的處理放在catch部分。 
  •  try~catch語句的格式如下:

  try {

      包含可能發生異常的語句

 }

 catch(ExceptionSubClass1  e) {

    …

 }

 catch(ExceptionSubClass2  e) {

    …

                  } 

 

  • finally子語句的try~catch語句,語法格式如下:

      try{}

     catch(ExceptionSubClass e){ }

     finally{}

其執行機制是在執行try~catch語句後,執行finally子語句,也就是說,無論在try部分是否發生過異常,finally子語句都會被執行。

6.自定義異常類

 

  • 一個方法不處理它產生的異常,而是沿著呼叫層次向上傳遞,由呼叫它的方法來處理這些異常,叫宣告異常.
  • 宣告異常的方法:在產生異常的方法名後面加上要丟擲(throws)的異常的列表:

如:void compute(int x) throws  ArithmeticException 

      {//這裡有異常發生,但是並沒有處理}

  • 一個方法在宣告時可以使用throws關鍵字宣告要產生的若干個異常,並在該方法的方法體中具體給出產生異常的操作,即用相應的異常類建立物件,並使用throw關鍵字丟擲該異常物件,導致該方法結束執行。

7.斷言

  •  斷言語句用於除錯程式碼階段。在除錯程式碼階段讓斷言語句發揮作用,這樣就可以發現一些致命的錯誤,當程式正式執行時就可以關閉斷言語句,但仍把斷言語句保留在原始碼中,如果以後應用程又需要除錯,可以重新啟用斷言語句。
  • 使用關鍵字assert宣告一條斷言語句,斷言語句有以下兩種格式:

–assert booleanExpression;

–assert booleanExpression:messageException;