java基礎———第十天

Object(基類)


定義:是所有對象的直接或者間接父類。
方法:
1、equals(){}//比較
2、toString(){}//轉成字符串
3、hashcode(){}//對象的哈希地址值
4、getClass(){}//返回運行時類
………………



內部類


定義:將一個類定義在另一個類裏,對裏面的那個類就稱爲內部類。
特點:
1.內部類可以直接訪問外部類中的成員,包括私有成員。
2.外部類要訪問內部類中的成員,必須要建立內部類的對象。
3.當內部類定義在成員位置上時:
可被private static 等成員修飾符修飾,被static修飾的內部類只能訪問外部類中的靜態
成員。
4.當內部類定義在局部位置上時:
也可直接訪問外部類中的成員,但不能被static 等成員修飾符所修飾。雖可以訪問所
在局部中的成員變量,但該變量必須是被final所修飾的。。
訪問格式:
<1>當定義在外部類的成員位置上,而且非私有,可以在外部類其他類中直接建立內部類對象訪問
格式:外部類名.內部類名  變量名 = new 外部類().new內部類()
<2>在外部類其他類中,訪問靜態內部類的非靜態成員:
格式:new 外部類.內部類().非靜態成員();
<3>在外部類其他類中,訪問靜態內部了的靜態成員:
格式:外部類.內部類.靜態成員();
什麼時候用?
在描述事物時,事物的內部還有事物,該事物就用內部類來描述。
匿名內部類
定義:就是內部類的簡化寫法。
前提:內部類實現或繼承一個接口或者外部類。
格式:
new 外部類名或者接口名(){
覆蓋類或者接口中的代碼(也可自定義內容)
}
————(注:必須定義在方法裏)
如:
class Demo {
	void show() {
		System.out.println("普通show方法");
	}
}


//通過繼承創建一個匿名內部類
class External {
	public void fanlet() {
		new Demo(){
			void show(){
				System.out.println("覆蓋後的show方法");
			}
		}.show();
	}
}


//通過接口創建匿名內部類
interface Inter {
	public void show1();
}


class Dmeo{
	public void fake() {
		//創建一個匿名內部類。
		new Inter() {
			public void show1() {
				System.out.println("fake");
			}
		};
	}
}

簡單理解:就是建立一個帶內容的外部類或者接口的子類匿名對象。
特點:
當定義的方法不超過3個時,方便了方法的調用,簡化了書寫。只可調用一次,只可
以使用父類中的方法。

異常
定義:
就是程序在運行時出現的不正常情況。
由來:
問題也是現實生活中一個具體的事物,也可以通過java的類的形式進行描述,並封裝
成對象。其實就是java中對不正常情況進行描述後的對象體系。

異常體系:


Throwable中的方法:

String getMessage() :獲取異常信息,返回字符串。

String toString() :獲取異常類名和異常信息,返回字符串。

void print stack Trace() :獲取異常類名和異常信息及異常出現的位置。

void print stack Trace(Print Stream s) :通常同該方法將異常信息內容保存在日誌文件中,以便查閱。

異常處理:

try{

    需要檢測的代碼;

}

catch(異常類  變量){

    異常處理代碼;

}

finally{

    一定會執行的代碼;(通常用來關閉資源)

}

Throws和Throw

1.throws用於標識函數暴露出來的異常,聲明異常(像貼了標籤的麪包)

2.throw用於拋出異常對象,可用於拋出自定義異常對象。

3.throws用在函數上,後面跟異常類名。

4.throw用在函數內,後面跟異常對象。

注:的那個函數內部出現了throw拋出異常對象,那麼就必須給出對應的處理動作,要麼try.catch處理,要麼在函數上

throws聲明讓調用者處理。

多異常處理:

1.用throws聲明異常時,應聲明具體的異常,這樣處理可以更具體。

2.thorws在函數上可聲明多個異常時,但聲明瞭幾個異常,就對應的要寫幾個catch塊。不要定義多餘的catch塊,如果多個catch塊的異常出現繼承關係,父類異常catch塊放在最下面。

自定義異常

由來:

因爲項目中會出現特有的問題,而這些問題並未被java所描述並封裝爲對象,所以對於這些特有的問題可按照java對問題封裝的思想,將特有的問題進行自定義的異常封裝。

步驟:

1.建立一個類,繼承Exception。

2.在功能會發生問題的地方,用throw拋出自定義異常類對象。

3.定義一個信息,因爲父類已經把異常信息的操作都完成了,所以子類只要在構造時,將異常信息傳遞給父類

(通過super語句)。那麼就可以直接通過getMessage方法獲取自定義異常信息。

Exception異常的分類

1.編譯時被檢測的異常:包括Exception子類,RunntimeException以外的所有異常,如果在函數上聲明,調用時沒有處理方式,編譯就會報錯,而且這種異常有正對性的處理方式,是可處理的。

2.編譯時不被檢測的異常:包括RunntimeException以及它的所有子類,該異常也稱爲運行時異常。如果功能上聲明瞭此異常。調用者可以不用任何處理方式也可以編譯通過。如果發生異常就需程序停止,對代碼進行修正。

細節:

<1>RunntimeException以及子類如果在函數中被throw拋出,可以不用在函數上聲明。

<2>子類覆蓋父類方法時,子類的方法必須拋出相同異常或者父類異常的子類。

<3>如果父類拋出了多個異常,子類覆蓋父類時,只能拋出相同的異常或者它的子集,子類不能拋出父類沒有的異常。

<4>如果被覆蓋的方法沒有異常拋出,那麼子類的方法絕對不可以拋出異常。如果子類內部有異常發生,那麼子類只能try,不能throws。

<5>當try對應多個catch時,最頂層的異常要放在最下面。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章