Java 拾遺三

1. Override 和 Overload 的含義去區(qū)別

  • Override(重寫)

重寫(Overriding)是父類與子類之間多態(tài)性的一種表現(xiàn)株茶。
覆蓋的方法的標(biāo)志必須要和被覆蓋的方法的標(biāo)志完全匹配院促,才能達(dá)到覆蓋的效果;
覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;
覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;
方法被定義為final不能被重寫喷市。
對(duì)于繼承來說,如果某一方法在父類中是訪問權(quán)限是private威恼,那么就不能在子類對(duì)其進(jìn)行重寫覆蓋东抹,如果定義的話,也只是定義了一個(gè)新方法沃测,而不會(huì)達(dá)到重寫覆蓋的效果缭黔。

  • Overload(重載)

重載(Overloading)是一個(gè)類中多態(tài)性的一種表現(xiàn)。
在使用重載時(shí)只能通過不同的參數(shù)樣式蒂破。例如馏谨,不同的參數(shù)類型,不同的參數(shù)個(gè)數(shù)附迷,不同的參數(shù)順序(當(dāng)然惧互,同一方法內(nèi)的幾個(gè)參數(shù)類型必須不一樣,例如可以是fun(int, float)喇伯, 但是不能為fun(int, int))喊儡;
不能通過訪問權(quán)限、返回類型稻据、拋出的異常進(jìn)行重載惹恃;
方法的異常類型和數(shù)目不會(huì)對(duì)重載造成影響拷肌;
重載事件通常發(fā)生在同一個(gè)類中姨俩,不同方法之間的現(xiàn)象鸟赫。
存在于同一類中,但是只有虛方法和抽象方法才能被覆寫今缚。

2. Interface 與 abstract 類的區(qū)別

接口(interface)可以說成是抽象類的一種特例算柳,接口中的所有方法都必須是抽象的。接口中的方法定義默認(rèn)為public abstract類型姓言,接口中的成員變量類型默認(rèn)為public static final瞬项。

下面比較一下兩者的語法區(qū)別:
1.抽象類可以有構(gòu)造方法蔗蹋,接口中不能有構(gòu)造方法。
2.抽象類中可以有普通成員變量囱淋,接口中沒有普通成員變量
3.抽象類中可以包含非抽象的普通方法纸颜,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法绎橘。
4.抽象類中的抽象方法的訪問類型可以是public,protected唠倦,但接口中的抽象方法只能是public類型的称鳞,并且默認(rèn)即為public abstract類型。
5.抽象類中可以包含靜態(tài)方法稠鼻,接口中不能包含靜態(tài)方法
6.抽象類和接口中都可以包含靜態(tài)成員變量冈止,抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型候齿,并且默認(rèn)即為public static final類型熙暴。
7.一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類慌盯。

3. static class 與 non static class 的區(qū)別

static class non static class
內(nèi)部靜態(tài)類不需要有指向外部類的引用 非靜態(tài)內(nèi)部類需要持有對(duì)外部類的引用
靜態(tài)類只能訪問外部類的靜態(tài)成員周霉,不能訪問外部類的非靜態(tài)成員 非靜態(tài)內(nèi)部類能夠訪問外部類的靜態(tài)和非靜態(tài)成員
- 一個(gè)非靜態(tài)內(nèi)部類不能脫離外部類實(shí)體被創(chuàng)建
- 一個(gè)非靜態(tài)內(nèi)部類可以訪問外部類的數(shù)據(jù)和方法

4. Java 多態(tài)的實(shí)現(xiàn)原理

子類Child繼承父類Father,我們可以編寫一個(gè)指向子類的父類類型引用,該引用既可以處理父類Father對(duì)象,也可以處理子類Child對(duì)象。
當(dāng)相同的消息發(fā)送給子類或者父類對(duì)象時(shí),該對(duì)象就會(huì)根據(jù)自己所屬的引用而執(zhí)行不同的行為,這就是多態(tài)亚皂。
即多態(tài)性就是相同的消息使得不同的類做出不同的響應(yīng)俱箱。

5. 實(shí)現(xiàn)多線程的兩種方法:Thread 與 Runable

  • 繼承 Thread 類

1.定義類繼承Thread;
2.覆寫Threa類的run方法灭必。 自定義代碼放在run方法中狞谱,讓線程運(yùn)行;
3.調(diào)用線程的star方法禁漓。

  • 實(shí)現(xiàn) Runable 接口

1.定義類實(shí)現(xiàn) Runnable 接口跟衅;
2.覆蓋 Runnable 接口中的 run 方法,運(yùn)行的代碼放入run方法中播歼;
3.通過 Thread 類建立線程對(duì)象伶跷;
4.將 Runnable 接口的子類對(duì)象作為實(shí)際參數(shù)傳遞給 Thread 類的構(gòu)造函數(shù);
因?yàn)槊啬远x的 run 方法所屬的對(duì)象是 Runnable 接口的子類對(duì)象撩穿。所以要讓線程去執(zhí)行指定對(duì)象的 run 方法。就必須明確該 run 方法所屬對(duì)象谒撼;
5.調(diào)用 Thread 類的 start 方法開啟線程并調(diào)用 Runnable 接口子類的 run 方法食寡。

6. 線程同步的方法:sychronized、lock廓潜、reentrantLock 等

  • sychronized

Java 中最基本同步互斥的手段抵皱,可以修飾代碼塊善榛、方法、類;
在修飾代碼塊的時(shí)候需要一個(gè) reference 對(duì)象作為鎖的對(duì)象;
在修飾方法的時(shí)候默認(rèn)是當(dāng)前對(duì)象作為鎖的對(duì)象;
在修飾類時(shí)候默認(rèn)是當(dāng)前類的 Class 對(duì)象作為鎖的對(duì)象呻畸。

synchronized 會(huì)在進(jìn)入同步塊的前后分別形成 monitorenter 和 monitorexit 字節(jié)碼指令移盆;
在執(zhí)行 monitorenter 指令時(shí)會(huì)嘗試獲取對(duì)象的鎖,如果此對(duì)象沒有被鎖或者已經(jīng)被當(dāng)前線程鎖住伤为,那么鎖的計(jì)數(shù)器加一咒循;
每當(dāng) monitorexit 被鎖的對(duì)象的計(jì)數(shù)器減一,直到為 0 就釋放該對(duì)象的鎖绞愚。
由此 synchronized 是可重入的叙甸,不會(huì)出現(xiàn)自己把自己鎖死。

可重入鎖位衩,也叫做遞歸鎖裆蒸,指的是同一線程 外層函數(shù)獲得鎖之后 ,內(nèi)層遞歸函數(shù)仍然有獲取該鎖的代碼糖驴,但不受影響

  • lock

lock 是一個(gè)類僚祷,通過這個(gè)類可以實(shí)現(xiàn)同步訪問;
必須要用戶去手動(dòng)釋放鎖,如果沒有主動(dòng)釋放鎖贮缕,就有可能導(dǎo)致出現(xiàn)死鎖現(xiàn)象;

  • reentrantLock

對(duì)象的方式來操作對(duì)象鎖.相對(duì)于 sychronized 需要在 finally 中去釋放鎖;
1.等待可中斷辙谜。在持有鎖的線程長時(shí)間不釋放鎖的時(shí)候,等待的線程可以選擇放棄等待感昼。tryLock(long timeout, TimeUnit unit)筷弦;
2.公平鎖。按照申請(qǐng)鎖的順序來一次獲得鎖稱為公平鎖抑诸。synchronized 的是非公平鎖烂琴,ReentrantLock 可以通過構(gòu)造函數(shù)實(shí)現(xiàn)公平鎖。new RenentrantLock(boolean fair)蜕乡;
3.綁定多個(gè) Condition奸绷。通過多次 new Condition 可以獲得多個(gè) Condition 對(duì)象,可以簡(jiǎn)單的實(shí)現(xiàn)比較復(fù)雜的線程同步的功能层玲。通過 await()号醉、signal()。

7. 鎖的等級(jí):方法鎖辛块、對(duì)象鎖畔派、類鎖

在修飾代碼塊的時(shí)候需要一個(gè) reference 對(duì)象作為鎖的對(duì)象;
在修飾方法的時(shí)候默認(rèn)是當(dāng)前對(duì)象作為鎖的對(duì)象;
在修飾類時(shí)候默認(rèn)是當(dāng)前類的 Class 對(duì)象作為鎖的對(duì)象。

8. 寫出生產(chǎn)者消費(fèi)者模式

準(zhǔn)確說應(yīng)該是“生產(chǎn)者-消費(fèi)者-倉儲(chǔ)”模型润绵,離開了倉儲(chǔ)线椰,生產(chǎn)者消費(fèi)者模型就顯得沒有說服力了。
對(duì)于此模型尘盼,應(yīng)該明確一下幾點(diǎn):
1.生產(chǎn)者僅僅在倉儲(chǔ)未滿時(shí)候生產(chǎn)憨愉,倉滿則停止生產(chǎn)烦绳;
2.消費(fèi)者僅僅在倉儲(chǔ)有產(chǎn)品時(shí)候才能消費(fèi),倉空則等待配紫;
3.當(dāng)消費(fèi)者發(fā)現(xiàn)倉儲(chǔ)沒產(chǎn)品可消費(fèi)時(shí)候會(huì)通知生產(chǎn)者生產(chǎn)径密;
4.生產(chǎn)者在生產(chǎn)出可消費(fèi)產(chǎn)品時(shí)候,應(yīng)該通知等待的消費(fèi)者去消費(fèi)躺孝。
https://www.cnblogs.com/linjiqin/p/3217050.html
https://www.cnblogs.com/chentingk/p/6497107.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末享扔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子植袍,更是在濱河造成了極大的恐慌惧眠,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奋单,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡猫十,警方通過查閱死者的電腦和手機(jī)览濒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拖云,“玉大人贷笛,你說我怎么就攤上這事≈嫦睿” “怎么了乏苦?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尤筐。 經(jīng)常有香客問我汇荐,道長,這世上最難降的妖魔是什么盆繁? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任掀淘,我火速辦了婚禮,結(jié)果婚禮上油昂,老公的妹妹穿的比我還像新娘革娄。我一直安慰自己,他們只是感情好冕碟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布拦惋。 她就那樣靜靜地躺著,像睡著了一般安寺。 火紅的嫁衣襯著肌膚如雪厕妖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天挑庶,我揣著相機(jī)與錄音叹放,去河邊找鬼饰恕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛井仰,可吹牛的內(nèi)容都是我干的埋嵌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼俱恶,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼雹嗦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起合是,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤了罪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后聪全,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泊藕,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年难礼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娃圆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛾茉,死狀恐怖讼呢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谦炬,我是刑警寧澤悦屏,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站键思,受9級(jí)特大地震影響础爬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吼鳞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一幕帆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赖条,春花似錦失乾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仿贬,卻和暖如春纽竣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工蜓氨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留聋袋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓穴吹,卻偏偏與公主長得像幽勒,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子港令,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法啥容,類相關(guān)的語法,內(nèi)部類的語法顷霹,繼承相關(guān)的語法咪惠,異常的語法,線程的語...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • 一:java概述:1淋淀,JDK:Java Development Kit遥昧,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,629評(píng)論 0 11
  • (一)Java部分 1朵纷、列舉出JAVA中6個(gè)比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,071評(píng)論 0 62
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,500評(píng)論 3 93
  • 2017年閱讀35本炭臭,跟別人比,跟以前的自己比柴罐,都不算多徽缚。 然而讀書不單求數(shù)量憨奸,也求質(zhì)量革屠。 今年閱讀上最大的收獲:...
    若辰讀書閱讀 774評(píng)論 1 13