最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

接口/內(nèi)部類/異常處理

2022-07-23 16:34 作者:劍離我離  | 我要投稿

interface

  1. 接口和類是并列的兩個結(jié)構(gòu)

  2. 如何定義接口:

  • JDK7以前:只能定義全局常量和抽象方法

  • 全局常量:public static final,可以省略,會默認(rèn)加上

  • 抽象方法:public abstract

  • JDK8:除了定義全局常量和抽象方法之外,還可以定義靜態(tài)方法、默認(rèn)方法

  • 接口中定義的靜態(tài)方法,只能通過接口來調(diào)用。

  • 通過實現(xiàn)類的對象,可以調(diào)用接口中的默認(rèn)方法,默認(rèn)方法,子類拿來可以直接調(diào)。

  • 如果子類(或?qū)崿F(xiàn)類)繼承的父類和實現(xiàn)的接口中聲明了同名同參數(shù)的方法,那么子類在沒有重寫此方法的情況下,默認(rèn)調(diào)用的是父類中的同名同參數(shù)的方法 。 --> 類優(yōu)先原則

  • 如果實現(xiàn)類實現(xiàn)了多個接口,而這多個接口中定義了同名同參數(shù)的默認(rèn)方法,那么在實現(xiàn)類沒有重寫此方法的情況下,報錯。 --> 接口沖突

  1. 接口通過類去實現(xiàn)(implements)的方式來使用。

  • 如果實現(xiàn)類覆蓋了接口中的所有抽象方法,則此實現(xiàn)類就可以實例化

  • 如果實現(xiàn)類沒有覆蓋接口中所有的抽象方法,則此實現(xiàn)類仍為一個抽象類,如果實現(xiàn)類重寫了接口中的默認(rèn)方法,調(diào)用時,仍然調(diào)用的是重寫以后的方法

  1. JAVA 可以實現(xiàn)多接口

內(nèi)部類

分類:成員內(nèi)部類(靜態(tài)、非靜態(tài)) ?vs 局部內(nèi)部類(方法內(nèi)、代碼塊內(nèi)、構(gòu)造器內(nèi))

成員內(nèi)部類:

  • 可以被final修飾,表明此類不能被繼承

  • 可以被absract修飾

  • 可以被四種不同修飾符修飾

局部內(nèi)部類的使用:

  • 在局部內(nèi)的方法中(比如 show),如果調(diào)用局部內(nèi)部類所聲明的方法(比如 : method ) 中的局部變量的話,要求此局部變量聲明為final的。

面試題:

抽象類和接口的異同?

相同點:不能實例化;都可以包括抽象方法;

不同點:

  • 把抽象類和接口(Java 7 ,java8 ,java9)的定義、內(nèi)部結(jié)構(gòu)解釋說明

  • 類: 單繼承 接口:多繼承; 類與接口: 多實現(xiàn)

異常處理

體系結(jié)構(gòu):

總父類:Trowable

  • java.lang.error :一般不編寫針對性的代碼進(jìn)行處理。

  • java.lang.Exception :可以進(jìn)行異常的處理

  • 編譯時異常(check)

  • 運行時異常(uncheck) --- RuntimeException

try-catch-finally

  • catch 中的異常類型,如果沒有子父類關(guān)系,則無順序要求

  • 如果有子類關(guān)系,則要求子類一定要父類上面

常用的兩種處理方法:

  • getMessage () ; // String

  • printStackTrace () : ?// void

在try中聲明的變量,出了try就用不了了

  • finally 中聲明的是一定會被執(zhí)行的代碼。即使catch中又出現(xiàn)異常了。 try中有return語句的情況,catch中有return語句的情況。

  • 像數(shù)據(jù)庫連接、輸入輸出流、socket連接,JVM是不能自動回收的。我們需要手動的進(jìn)行資源的回收,此時的資源釋放,就需要放在finally中

使用try-catch 處理編譯時異常,是得程序在編譯時就不報錯,但是運行時仍可報錯。相當(dāng)于我們使用try-catch 將一個編譯時可能出現(xiàn)的異常,延遲到運行時出現(xiàn)。

throws + 異常類型

一旦當(dāng)方法體執(zhí)行時,出現(xiàn)異常,仍會在異常代碼處生成一個異常類的對象,此對象滿足throws后異常類型時,就會被拋出。異常代碼后續(xù)的代碼,就不再執(zhí)行。

try-catch : ?真正的將異常處理掉了

throws: 只是將異常拋給了方法的調(diào)用者。并沒有真正地將異常處理掉。

開發(fā)中如何選擇:

  • 如果父類中被重寫的方法沒有throws方法處理異常,則子類重寫的方法也不能使用throws,意味著如果子類 重寫的方法中有異常,必須使用try-catch

  • 執(zhí)行的方法中,先后又調(diào)用了另外的幾個方法,這幾個方法是遞進(jìn)關(guān)系進(jìn)行的。我們建議這幾個方法使用throws的方式進(jìn)行處理。而執(zhí)行的方法a可以考慮try-catch的方式進(jìn)行處理。

關(guān)于異常對象的產(chǎn)生:

  • 系統(tǒng)自動生成的異常對象

  • 手動的生成一個異常對象,并拋出“throw”

只有異常體系的對象才可以 throew new ?異常類類名 () ;

throw 和 thorws 的區(qū)別 :

  • throw是拋,throws 是抓

  • throw 表示拋出一個異常類的對象,生成異常對象的過程。聲明在方法體內(nèi)

  • throws 屬于異常處理的一種方式,聲明在方法的聲明處


接口/內(nèi)部類/異常處理的評論 (共 條)

分享到微博請遵守國家法律
广元市| 鄱阳县| 黑水县| 轮台县| 繁昌县| 连州市| 墨脱县| 台安县| 茂名市| 稻城县| 加查县| 平阳县| 天津市| 古田县| 宜宾市| 抚松县| 万安县| 惠东县| 卫辉市| 宣汉县| 西安市| 金秀| 河北省| 新丰县| 自治县| 金阳县| 安阳市| 获嘉县| 肥西县| 松潘县| 长兴县| 济宁市| 博罗县| 舒城县| 太康县| 大厂| 那坡县| 浑源县| 赤峰市| 肇源县| 永新县|