接口interface:與類并行的一個(gè)概念
- 接口可以看做是一個(gè)特殊的抽象類掘殴。是常量與抽象方法的一個(gè)集合,不能包含變量、一般的方法千所。
- 接口是沒有構(gòu)造器的。
- 接口定義的就是一種功能蒜埋。此功能可以被類所實(shí)現(xiàn)(implements)淫痰。
- class CC extends DD implements AA
- 實(shí)現(xiàn)接口的類,必須要重寫其中的所有的抽象方法整份,方可實(shí)例化待错。若沒有重寫所有的抽象方法,則此類仍為一個(gè)抽象類
- 類可以實(shí)現(xiàn)多個(gè)接口烈评。----java 中的類的繼承是單繼承的
- 接口與接口之間也是繼承的關(guān)系火俄,而且可以實(shí)現(xiàn)多繼承
- 接口與具體的實(shí)現(xiàn)類之間也存在多態(tài)性
工廠模式 && 代理模式
異常處理
- 體系結(jié)構(gòu)
java.lang.Object
|----java.lang.Throwable
|-------java.lang.Error:錯(cuò)誤,java程序?qū)Υ藷o能為力础倍,不顯式的處理
|-------java.lang.Exception:異常烛占。需要進(jìn)行處理
|------RuntimeException:運(yùn)行時(shí)異常
|ArrayIndexOutOfBoundsException/NullPointerException/ArithmeticException/ClassCastException
|------非RuntimeException:編譯時(shí)異常 - 因?yàn)閖ava程序分為javac.exe和java.exe兩個(gè)過程,在每個(gè)過程中沟启,都有可能出現(xiàn)異常忆家。故分為編譯時(shí)異常、運(yùn)行時(shí)異常
- 對(duì)于運(yùn)行時(shí)異常比較常見德迹,可以不顯式的來處理芽卿。
- 對(duì)于編譯時(shí)異常,必須要顯式的處理
如何處理異常
- "拋":當(dāng)我們執(zhí)行代碼時(shí)胳搞,一旦出現(xiàn)異常卸例,就會(huì)在異常的代碼處生成一個(gè)對(duì)應(yīng)的異常類型的對(duì)象称杨,并將此對(duì)象拋出。(自動(dòng)拋出 / 手動(dòng)拋出)
- 一旦拋出此異常類的對(duì)象筷转,那么程序就終止執(zhí)行
- 此異常類的對(duì)象拋給方法的調(diào)用者姑原。
- "抓":抓住上一步拋出來的異常類的對(duì)象。如何抓呜舒?即為異常處理的方式
- java 提供了兩種方式用來處理一個(gè)異常類的對(duì)象锭汛。
處理的方式一:
try{* //可能出現(xiàn)異常的代碼* }
catch(Exception1 e1){* //處理的方式1* }
catch(Exception2 e2){* //處理的方式2* }
finally{* //一定要執(zhí)行的代碼* }
注:
1.try內(nèi)聲明的變量,類似于局部變量袭蝗,出了try{}語句唤殴,就不能被調(diào)用
2.finally是可選的
3.catch語句內(nèi)部是對(duì)異常對(duì)象的處理:* >getMessage(); printStackTrace();*
4.可以有多個(gè)catch語句,try中拋出的異常類對(duì)象從上往下去匹配catch中的異常類的類型到腥,一旦滿足,就執(zhí)行catch中的代碼朵逝。執(zhí)行完,就跳出其后的多條catch語句
5.如果異常處理了乡范,那么其后的代碼繼續(xù)執(zhí)行
6.若catch中多個(gè)異常類型是"并列"關(guān)系配名,孰上孰下都可以。
若catch中多個(gè)異常類型是"包含"關(guān)系晋辆,須將子類放在父類的上面段誊,進(jìn)行處理。否則報(bào)錯(cuò)栈拖!
7.finally中存放的是一定會(huì)被執(zhí)行的代碼,不管try中没陡、catch中是否仍有異常未被處理涩哟,以及是否有return語句
8.try-catch是可以嵌套的。
處理方式二:在方法的聲明處盼玄,顯式的使用throws + 異常類型
拋出異常不在本方法內(nèi)進(jìn)行處理贴彼,而是由調(diào)用它的方法處理
public void method1() throws Exception1 e1,Exception2 e2
{//可能出現(xiàn)異常(尤其是編譯時(shí)異常,一定要處理)}
public void method2() throws Exception1 e1,Exception2 e2
{method1();}
public void method3()
{try{method2();}
catch(Exception1 e1){System.out.println(e1.getMessage());}
catch(Exception2 e2){System.out.println(e2.getMessage());}}
public static void main(String[] args)
{對(duì)象1.method3();//不會(huì)再出現(xiàn)上述的Exception1和Exception2的異常埃儿!}
如何手動(dòng)的拋出一個(gè)異常器仗?
- 在方法的內(nèi)部,可以使用 throw + 異常類對(duì)象童番,來手動(dòng)的拋出一個(gè)異常精钮!