最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

default怎么修飾接口中的方法詳解

 更新時(shí)間:2021年05月26日 14:30:38   作者:遠(yuǎn)赴山河萬里  
今天給各位小伙伴們總結(jié)一下default怎么修飾接口中的方法,文中有非常詳細(xì)的圖文解說.對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下

一、default修飾接口中的方法

在實(shí)現(xiàn)HandlerInterceptor接口時(shí),我發(fā)現(xiàn)不實(shí)現(xiàn)HandlerInterceptor接口的方法也不會(huì)報(bào)錯(cuò)

在這里插入圖片描述

仔細(xì)想來,還是我對接口的理解不清晰。

打開源碼發(fā)現(xiàn)HandlerInterceptor接口中的方法都是default

在這里插入圖片描述

在以前的接口編寫中,我總是省略權(quán)限修飾符,因?yàn)樵诮涌谥械?strong>方法中默認(rèn)是public abstract。

那么再來對接口進(jìn)行總結(jié)。

在這里插入圖片描述

那么也就是說,實(shí)現(xiàn)類要覆蓋接口中的抽象方法就能實(shí)例化,而HandlerInterceptor接口中的方法都是default

在JDK8增加的default修飾接口方法時(shí),有什么作用呢?

實(shí)現(xiàn)類會(huì)繼承接口中的default方法

還有兩個(gè)要注意的點(diǎn)

一言以蔽之,更接近實(shí)現(xiàn)類的優(yōu)先級更高,如: 實(shí)現(xiàn)類 > 抽象類 > 接口

1. 如果一個(gè)類同時(shí)實(shí)現(xiàn)接口A和B,接口A和B中有相同的default方法,這時(shí),該類必須重寫接口中的default方法

2. 如果子類繼承父類,父類中有b方法,該子類同時(shí)實(shí)現(xiàn)的接口中也有b方法(被default修飾),那么子類會(huì)繼承父類的b方法而不是繼承接口中的b方法

二、Java中的“多繼承“?

在學(xué)習(xí)C++時(shí),多繼承會(huì)帶來非常著名的菱形繼承問題

那么為什么Java接口為何能多繼承?

1.Java接口是行為性的,也就是說接口只是定義某個(gè)行為的名稱
2.具體的實(shí)現(xiàn)動(dòng)作,都在實(shí)現(xiàn)類本身這里。

從JDK8開始,接口中可以寫default方法了。這其實(shí)是java自己就給自己出了一個(gè)問題。

接口可以書寫默認(rèn)方法了,然后又因?yàn)?strong>接口之間是可以多繼承的,因而實(shí)質(zhì)上Java 8的接口多繼承其實(shí)也會(huì)涉及到實(shí)現(xiàn)多繼承的問題。

解決接口default方法沖突的三步驟:

  • 方法簽名相同時(shí),才表示出現(xiàn)了沖突。
  • 類中的方法優(yōu)先級最高。類或者父類中的方法實(shí)現(xiàn)優(yōu)先級大于任何接口的默認(rèn)方法
  • 其實(shí),子接口的默認(rèn)方法優(yōu)先級更高。
  • 若最終還是無法判斷,那么實(shí)現(xiàn)類必須通過顯示復(fù)寫的方式復(fù)寫默認(rèn)方法,然后再自己通過xxx.super.xxx()的方式來指定具體使用哪個(gè)接口的實(shí)現(xiàn)

總之,Java8在語言層面上,對若出現(xiàn)接口default方法沖突的解決方案是:不作為。其實(shí)不作為也是一種作為,它讓編譯器去提示調(diào)用者必須顯示的override這個(gè)沖突的方法,讓coder自己去決定調(diào)用邏輯

三、關(guān)于抽象類與接口的思考

如果現(xiàn)在問我接口和抽象類有什么區(qū)別,我會(huì)覺得去說兩者之間具體的使用細(xì)節(jié)是舍本逐末了,應(yīng)該從設(shè)計(jì)理念出發(fā)。

于是引出我對此的理解。

抽象類:抽象體,對于個(gè)體(事物)的抽象。

接口:抽象面,對于事物某一特性(行為)的抽象。接口只是定義某個(gè)行為的名稱。

在Java的設(shè)計(jì)中,經(jīng)常可以看到兩者組合起來使用。如Servlet

什么叫Servlet?實(shí)現(xiàn)了Servlet接口的類就是一個(gè)Servlet。

在這里插入圖片描述

可以發(fā)現(xiàn),抽象類GenericServlet實(shí)現(xiàn)了Servlet接口。

接口的好處是什么?

規(guī)范。

抽象類的好處是什么?

捕捉子類的通用特性,減少冗余代碼,同時(shí)起到規(guī)范的作用。

這樣兩者結(jié)合起來的好處是什么(GenericServlet)?

規(guī)范,同時(shí)減少了編程人員的所需要編寫的代碼,抽象類給出模板。

到此這篇關(guān)于default怎么修飾接口中的方法詳解的文章就介紹到這了,更多相關(guān)default修飾方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

金门县| 通榆县| 开原市| 临洮县| 思茅市| 灵石县| 修水县| 尼木县| 兴和县| 东阳市| 丰县| 连江县| 鹤壁市| 新河县| 花莲市| 太仓市| 娱乐| 宁夏| 嘉禾县| 岱山县| 东丽区| 饶河县| 监利县| 汨罗市| 公安县| 综艺| 宁南县| 兴化市| 成武县| 阜宁县| 澄城县| 阳新县| 会昌县| 松潘县| 吴桥县| 三明市| 永登县| 新竹市| 堆龙德庆县| 政和县| 雅江县|