Java中不可不知道的幾個(gè)重要知識點(diǎn)

# ReviewDay 5

## 接口

### 接口是更加抽象的抽象類

- 接口不能被實(shí)例化

- 接口中所有的方法都是 *public* 方法

- 接口中的抽象方法可以不用abstract

- 接口的字段都是 *public static final* 的常量

- 除了抽象類筑公,實(shí)現(xiàn)接口的類必須實(shí)現(xiàn)接口的所有方法

### 接口與抽象類

- 每個(gè)類只能繼承一個(gè)類,但一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口

- 接口不能繼承其他的類蒸痹,但可以繼承多個(gè)別的接口

? > interface A extends B, C{}

- #### 實(shí)現(xiàn)接口與繼承類

? - 接口與繼承解決的問題不同

? ? > 繼承價(jià)值主要在于解決代碼的復(fù)用性和可維護(hù)性

>

? ? > 接口價(jià)值主要在于設(shè)計(jì)號各種規(guī)范冒萄,讓其他類實(shí)現(xiàn)這些方法

? - 接口比繼承更加靈活

? - 接口一定程度上實(shí)現(xiàn)代碼解耦

### 接口的多態(tài)特性

? - 多態(tài)參數(shù)

? - 多態(tài)數(shù)組

? - 多態(tài)傳遞(實(shí)現(xiàn)的接口實(shí)現(xiàn)了另一個(gè)接口)

## ~~lambda 表達(dá)式~~

## 內(nèi)部類

### 內(nèi)部類的分類

- 定義在外部類的局部位置(方法中窖逗、代碼塊)

? > (1)局部內(nèi)部類 (有類名)

>

? > (2)**匿名內(nèi)部類**(沒有類名)

- 定義在外部類的成員位置

? > (1)成員內(nèi)部類

>

? > (2)靜態(tài)內(nèi)部類 (static)

### 局部內(nèi)部類

- 可以直接訪問內(nèi)部類的所有成員,包括私有的

- 不能添加訪問修飾符,相當(dāng)于一個(gè)局部變量,但可以用final

- 作用域僅在定義它的方法或代碼塊

- 外部類和局部內(nèi)部類的成員重名時(shí)媒楼,要訪問外部類的成員時(shí)可以使用 (外部類名.this.成員)

### 匿名內(nèi)部類

- 既是一個(gè)類的定義,同時(shí)本身也是一個(gè)對象

- 可以直接訪問內(nèi)部類的所有成員戚丸,包括私有的

- 不能添加訪問修飾符划址,相當(dāng)于一個(gè)局部變量

- 匿名內(nèi)部類不能有構(gòu)造器,但可以提供對象初始化代碼塊

- 作用域僅在定義它的方法或代碼塊

- 外部**其他類**不能訪問匿名內(nèi)部類

- 常用于參數(shù)傳遞

```java

//基于類的匿名內(nèi)部類

Father father = new Father("jack") {

@Override

public void test() {

? ? ? ? //匿名內(nèi)部類重寫了方法

}

}

//基于抽象類的匿名內(nèi)部類

//基于接口的匿名內(nèi)部類

new Comparator() {

@Override

public int compare() {

? ? ? ? //重寫方法

}

}```

### 成員內(nèi)部類

- 成員內(nèi)部類定義外部類的成員位置限府,并且沒有static

- 可以添加訪問修飾符

- 作用域與其他成員變量一樣

- 外部類訪問成員內(nèi)部類時(shí)須創(chuàng)建對象再訪問

- 外部類和局部內(nèi)部類的成員重名時(shí)夺颤,要訪問外部類的成員時(shí)可以使用 (外部類名.this.成員)

### 靜態(tài)內(nèi)部類

- 定義于外部類的成員位置,并且有static修飾 (有static修飾的成員內(nèi)部類)

## 異常

### 執(zhí)行過程中所發(fā)生的異常事件可以分為兩大類

- Error(錯(cuò)誤):JVM無法解決的嚴(yán)重問題谣殊,如StackOverflowError和OOM

- Exception:因編程錯(cuò)誤或偶然的外在因素導(dǎo)致的一般性問題

? - 運(yùn)行時(shí)異常

? > 編譯器檢查不出來,一般是編程時(shí)的邏輯錯(cuò)誤

? - 編譯異常

? > 編譯器要求的必須處置的異常牺弄,否則不能通過編譯

? ![exception體系圖](http://pic.ruikai.ltd/img/202204101510019.png)

### 異常處理

- try-catch-finally

> 捕獲異常姻几,自行處理

? 1) 如果try塊中沒有出現(xiàn)異常,則執(zhí)行try塊中的所有語句势告,不再執(zhí)行catch塊蛇捌,若有finally,最后還要執(zhí)行finally塊中語句

? 2) 如果出現(xiàn)了異常咱台,則try塊中剩下的語句不在執(zhí)行络拌,將執(zhí)行catch塊,最后執(zhí)行finally塊

```java

try{

return 1;

} catch Exception e {

return 2;

} finally {

return 3;

}

? ? ? ? //try 塊中沒有出現(xiàn)異常回溺,catch塊不執(zhí)行春贸,因?yàn)橛衒inally塊中的return(finally必須執(zhí)行),所以finally中return執(zhí)行遗遵,try中return不執(zhí)行

try{

? ? ? ? ? ? //出現(xiàn)異常

return 1;

} catch Exception e {

return 2;

} finally {

return 3;

}

? ? ? ? //try 中出現(xiàn)異常萍恕,try中return不再執(zhí)行, 又因?yàn)閒inally有return车要,所以catch中return不執(zhí)行允粤,finally中return被執(zhí)行

try{

? ? ? ? ? ? //出現(xiàn)異常

return 1;

} catch Exception e {

int a = 1;

return a;

} finally {

a += 1;

}

? ? ? ? //try 中出現(xiàn)異常, catch被執(zhí)行翼岁,執(zhí)行到return時(shí)會(huì)將 a = 1保存為臨時(shí)變量 temp = 1;最后finally修改后再執(zhí)行catch塊中的語句类垫,并將臨時(shí)變量返回,而不是修改后的a```

- throws/throw

> 拋出異常琅坡,交給調(diào)用者處理

>

? >? throw和throws的區(qū)別

>? ![img](http://pic.ruikai.ltd/img/202204101535916.png)

-try-with-resources(帶資源的try語句)

```java

? ? ? ? try (Resource res = ...) //res實(shí)現(xiàn)了Closeable接口(AutoCloseable的子接口)

{

work with res ...

? ? ? ? }```

? > try 退出時(shí)悉患,會(huì)自動(dòng)調(diào)用res.close(),自動(dòng)關(guān)閉資源(無論是否出現(xiàn)異常)

>

? > try-with-resource也可以有catch、finally語句榆俺,這些語句將在資源被關(guān)閉后執(zhí)行

>

### 自定義異常

1) 自定義類繼承Exception或RuntimeException

2) 繼承Exception則屬于編譯異常

3) 繼承RuntimeException則屬于運(yùn)行異常

```java

class AgeException extends RuntimeException {

public AgeException(String message) {

super(message);

}

}```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末购撼,一起剝皮案震驚了整個(gè)濱河市跪削,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迂求,老刑警劉巖碾盐,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異揩局,居然都是意外死亡毫玖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門凌盯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來付枫,“玉大人,你說我怎么就攤上這事驰怎〔玻” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵县忌,是天一觀的道長掂榔。 經(jīng)常有香客問我,道長症杏,這世上最難降的妖魔是什么装获? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮厉颤,結(jié)果婚禮上穴豫,老公的妹妹穿的比我還像新娘。我一直安慰自己逼友,他們只是感情好精肃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帜乞,像睡著了一般肋杖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挖函,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天状植,我揣著相機(jī)與錄音,去河邊找鬼怨喘。 笑死津畸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的必怜。 我是一名探鬼主播肉拓,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梳庆!你這毒婦竟也來了暖途?” 一聲冷哼從身側(cè)響起卑惜,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驻售,沒想到半個(gè)月后露久,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欺栗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年毫痕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迟几。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡消请,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出类腮,到底是詐尸還是另有隱情臊泰,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布蚜枢,位于F島的核電站缸逃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏祟偷。R本人自食惡果不足惜察滑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一打厘、第九天 我趴在偏房一處隱蔽的房頂上張望修肠。 院中可真熱鬧,春花似錦户盯、人聲如沸嵌施。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吗伤。三九已至,卻和暖如春硫眨,著一層夾襖步出監(jiān)牢的瞬間足淆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工礁阁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巧号,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓姥闭,卻偏偏與公主長得像丹鸿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子棚品,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容