1. 程式人生 > >java 第七章 內部類與異常類

java 第七章 內部類與異常類

1. java支援在一個類中定義另一個類,這樣的類稱作內部類。而包含內部類的類被成為內部類的外嵌類

2.內部類與外嵌類的重要關係:(1)內部類的外嵌類的成員變數內部類中仍然有效內部類中的方法也可以呼叫外嵌類中的方法;(2)內部類的類體中不可以宣告類變數和類方法。外嵌類的類體中可以用內部類宣告物件,作為外嵌類的成員;(3)內部類僅供它的外嵌類使用,其他類不可以用某個類的內部類宣告物件。

3. Java編譯器生成的內部類的位元組碼檔案的名字和通常的類不同,內部類對應的位元組碼檔案的名字格式是“外嵌類名$內部類名”。

4. 內部類可以修飾為static內部類,那麼static內部類就是外嵌類中的一種靜態資料型別

,程式可以在其他類中使用static內部類來建立物件,static內部類不能操作外嵌類中的例項成員變數

5. 非內部類不可以是static類。

6. Java允許我們直接使用一個類的子類的類體建立一個子類物件,也就是說,建立子類物件時,除了使用父類的構造方法外還有類體,此類體被認為是一個子類去掉類聲明後的類體,稱作匿名類匿名類就是個子類,由於無名可用,所以不可能用匿名類宣告物件,但卻可以直接用匿名類建立一個物件

7. 匿名類特點:(1)匿名類可以繼承父類的方法也可以重寫父類的方法;(2)使用匿名類時,必然是在某個類中直接用匿名類建立物件,因此匿名類一定是內部類;(3)匿名類可以訪問外嵌類中的成員變數和方法,匿名類的類體中不可以宣告static

成員變數和static方法;(4)由於匿名類是一個子類,但沒有類名,所以在用匿名類建立物件時,要直接使用父類的構造方法。

8. 儘管匿名類建立的物件沒有經過類宣告步驟,但匿名物件的引用可以傳遞給一個匹配的引數。

9. 假設Computeable是一個介面,那麼java允許直接用介面名和一個類體建立一個匿名物件,此類體被認為是實現了Computable介面的類去掉類聲明後的類體,稱作匿名類。如:

new Computable(){

實現介面的匿名類的類體

};

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

11. Java使用throw

關鍵字丟擲一個Exception子類的例項表示異常發生。如,java.lang包中的Integer類呼叫其類方法public static int parseInt(String s)可以將“數字”格式的字串如“6789”轉化為int型資料,但是當試圖將字串“ab89”轉換成數字時,例如:int number=Integer.parseInt(“ab89”);方法parseInt()在執行過程中就會丟擲NumberFormatException物件,即程式執行出現NumberFormatException異常。

12. Java允許定義方法時宣告該方法呼叫過程中可能出現的異常,即允許方法呼叫過程中丟擲異常物件,終止當前方法的繼續執行。

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

public String  getMessage();只顯示原因,不顯示類名

public void printStackTrace();跟蹤異常發生時堆疊的內容

public String toString();顯示類名和原因

14. java使用try-catch語句來處理異常,將可能出現的異常操作放在try-catch語句的try部分,一旦try部分丟擲異常物件,或呼叫某個可能丟擲異常物件的方法,並且該方法丟擲了異常物件,那麼try部分將立刻結束執行,轉向執行相應的catch部分。

15. try-catch格式如下:

try{

包含可能發生異常的語句

}

Catch(ExceptionSubClass1 e){

}

Catch(ExceptionSubClass2 e){

}

16. 各個catch引數中的異常類都是Exception的某個子類,表明try部分可能發生的異常,這些子類之間不能有父子關係,否則保留一個含有父類引數的catch即可。

17. 程式必須在try-catch塊語句中呼叫可能發生異常的方法,其中catch的作用就是捕獲throw關鍵字丟擲的異常。

18. 使用關鍵字assert宣告一條斷言語句,斷言語句有兩種格式:

(1)assertbooleanExpression; 當booleanExpression的值是true時,程式從斷言語句處繼續執行,反之停止;

(2)assert BooleanExpression:messageException; 當booleanException的值是true時,程式從斷言語句處繼續執行;值是false時,程式從斷言語句處停止執行,並輸出messageException表示式的值,提示使用者出現了怎樣的問題。

19.當使用java直譯器直接執行應用程式時,預設地關閉斷言語句,在調式程式時可以使用-ea啟用斷言語句,如:java –ea mianClass

20.finally子語句的try-catch語句,語法格式如下:

try{}

catch{ExceptionSubClass e}{}

finally{}

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

21.但要注意兩種特殊情況:

(1)如果在try-catch語句中執行了return語句,那麼finally子語句仍然會被執行;(2)try-catch語句中執行了程式退出程式碼,即執行System.exit(0);,則不執行finally子語句(當然包括後面的所有語句)。

相關推薦

java 部類異常

1. java支援在一個類中定義另一個類,這樣的類稱作內部類。而包含內部類的類被成為內部類的外嵌類。 2.內部類與外嵌類的重要關係:(1)內部類的外嵌類的成員變數在內部類中仍然有效,內部類中的方法也可以呼叫外嵌類中的方法;(2)內部類的類體中不可以宣告類變數和類方法。外嵌類

201711671223《Java程式設計》八週學習總結 7部類異常

《Java程式設計》第八週學習總結 第7章內部類與異常類 教材內容學習總結 Java提供用於開發桌面程式的API,這些API在javax.swing包中。圖形使用者介面(GUI),Java的java.awt包,即Java抽象視窗工具包(AWT)提供了許多設計GUI的元件類。容器類(Conta

[隨筆][Java][讀書筆記][thinking in java][ 部類]

10.6 效果 getc tps 啟動 implement bool 多個 tina 可以將一個類定義在另一個類的內部,這就是內部類。 10.1 創建內部類 public class Parcell { class Contents { priv

Thinking in Java——-部類

本文是對《Thinking in Java》第十章內容的整理。書中有些地方略顯晦澀,我加上了自己淺薄的理解。 文章結構 1、介紹了建立 內部類以及內部類的普遍特性 2、介紹了局部內部類、匿名內部類

JAVA部類異常

內部類 定義 在類A中聲明瞭類B,B稱為內部類,A稱為B的外嵌類 應用 需要建立一個類,不想它為外界所用 public class RedCowform{ static String formName = "紅牛農場"; Redcow cow;// 宣告 public Red

java初入部類異常

可以擴充套件Exception定義自己的異常類,然後根據需要來規定哪些錯誤產生這樣的異常。在宣告方法的時候可以用throws關鍵字宣告要產生的異常,並在該方法的方法體中具體給出產生異常的操作,並使用throw關鍵字丟擲該異常物件。

Thinking in Java學習筆記----復用

obj class 都是 一個 per private gpo toon on() 復用代碼,即使用已經開發並調試好的類。組合和繼承是兩種實現方法。 組合語法:   在新類中創建現有類的對象。該方法只是復用了現有代碼的功能,而非它的形式。   組合的例子隨處可見,這裏不舉例

Java筆記丨20 部類匿名

內部類是在其他類中的類 匿名類是一種特殊的內部類,它沒有類名   內部類 內部類的定義 將類的定義class xxxx{…}置入一個類的內部即可 編譯器生成xxxx$xxxx這樣的class檔案 內部類不能與外部類同名 內部類的使用 在封裝它的類的內部使

部類異常

8.1內部類  1java支援在一個類中宣告另一個類,這樣的類稱之為內部類,包含內部類的類稱之為外嵌類,外嵌類的成員變數在內部類中依然有效,內部類的方法在也可以呼叫外嵌類的方法。 8.2匿名類    1.沒有顯明的宣告一個類的子類,但又想用子類建立一個物件。我們可以直接用匿

Java(五)-部類異常

一、內部類(類中套類) 在一個類中定義另一個類成為內部類 包含內部類的類稱為內部類的外嵌類 內部類和外嵌類的關係: 內部類的外嵌類的成員變數和方法在內部類中有效 內部類不可以宣告類變數和類方法 內部類僅供它的外嵌類使用 注: 內部類

部類異常例題

內部類public class RedCowForm{ static String formName; RedCow cow;//內部類宣告物件 public RedCowForm() { } RedCowForm(String s){ cow=new RedC

JAVA-初步認識--部類-局部內部類

png 方法 image cnblogs -s 只有一個 外部類 理解 輸出 一. 繼續將之前的例子深化一下。現在要講述的是內部類除了放置在成員上,還能放置在局部上。換句話說,就是哪都能放。 這裏局部位置是指哪兒? 繼續將程序補全,截圖如下: 上面的截圖其實交代了內部

Java編程思想》筆記 部類

處理 this 都是 多層 不能 RM 互訪 4.2 引用調用 1.創建內部類對象 1.1 創建內部類對象(相當於new內部類對象) 外圍類對象.new 內部類( )。 1.2 創建內部類對象一種方法是 外圍類有一個方法返回內部類對象。 1.3 沒有外圍類對象就不能創建內部

【學習筆記】 唐大仕—Java程式設計 5講 深入理解Java語言之5.5 部類匿名

/** * 內部類與匿名類 * @author cnRicky * @date 2018.11.10 */ 內部類與匿名類 內部類(inner class)是在其他類中的類 匿名類(anonymous class)是一種特殊的內部類,它沒有類名 內部類(Inner class)

java程式設計思想——(部類)》

內部類 可以將一個類的定義放在另一個類的定義內部,這就是內部類。 10.1 建立內部類 把類的定義置於外圍類的裡面。 /** * 建立內部類 * @author Administrator */ public class Parcel1 { class Co

Java程式設計思想》10 部類

書中原始碼:https://github.com/yangxian1229/ThinkingInJava_SourceCode 可以將一個類的定義放在另一個類的定義內部,這就是內部類。 內部類與組合是完全不同的概念。 10.1 建立內部類 把類的定義置於外圍類的裡面。更典型的情況是,

《 Thinking in Java 部類

可以將一個類的定義放在另一個類的定義內部,這就是內部類 內部類與組合是完全不同的概念。 內部類看起來像是一種程式碼隱藏機制,但是它還了解外圍類,並能與之通訊; 更優雅!!! 建立內部類 很簡單——把類的定義置於外圍類的裡面: public class A {

“全棧2019”Java第一百零六:匿名部類抽象接口註意事項

inf href 匿名 頭條號 java學習 info intellij tel https 難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文鏈接 “全棧2019”Jav

Thinking in Java-部類

/** * Created by ivalue on 2017/12/21. */ // p209 public class GreenHouseController extends Controller { private boolean light = false; public

“全棧2019”Java第一百零六:匿名部類抽象介面注意事項

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第一百零六章:匿名內部類與抽象類介面注意事項 下一章 “全棧2019”Java第一百零七章: