91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

default如何修飾接口中的方法

發布時間:2021-05-27 09:38:28 來源:億速云 閱讀:274 作者:小新 欄目:開發技術

小編給大家分享一下default如何修飾接口中的方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

一、default修飾接口中的方法

在實現HandlerInterceptor接口時,我發現不實現HandlerInterceptor接口的方法也不會報錯

default如何修飾接口中的方法

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

打開源碼發現HandlerInterceptor接口中的方法都是default

default如何修飾接口中的方法

在以前的接口編寫中,我總是省略權限修飾符,因為在接口中的方法中默認是public abstract

那么再來對接口進行總結。

default如何修飾接口中的方法

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

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

實現類會繼承接口中的default方法

還有兩個要注意的點

一言以蔽之,更接近實現類的優先級更高,如: 實現類 > 抽象類 > 接口

1. 如果一個類同時實現接口A和B,接口A和B中有相同的default方法,這時,該類必須重寫接口中的default方法

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

二、Java中的“多繼承“?

在學習C++時,多繼承會帶來非常著名的菱形繼承問題

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

1.Java接口是行為性的,也就是說接口只是定義某個行為的名稱
2.具體的實現動作,都在實現類本身這里。

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

接口可以書寫默認方法了,然后又因為接口之間是可以多繼承的,因而實質上Java 8的接口多繼承其實也會涉及到實現多繼承的問題。

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

  • 方法簽名相同時,才表示出現了沖突。

  • 類中的方法優先級最高。類或者父類中的方法實現優先級大于任何接口的默認方法

  • 其實,子接口的默認方法優先級更高。

  • 若最終還是無法判斷,那么實現類必須通過顯示復寫的方式復寫默認方法,然后再自己通過xxx.super.xxx()的方式來指定具體使用哪個接口的實現

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

三、關于抽象類與接口的思考

如果現在問我接口和抽象類有什么區別,我會覺得去說兩者之間具體的使用細節是舍本逐末了,應該從設計理念出發。

于是引出我對此的理解

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

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

在Java的設計中,經常可以看到兩者組合起來使用。如Servlet

什么叫Servlet?實現了Servlet接口的類就是一個Servlet。

default如何修飾接口中的方法

可以發現,抽象類GenericServlet實現了Servlet接口。

接口的好處是什么?

規范。

抽象類的好處是什么?

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

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

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

看完了這篇文章,相信你對“default如何修飾接口中的方法”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绵阳市| 布尔津县| 娱乐| 西吉县| 桦川县| 平邑县| 莆田市| 卢湾区| 北辰区| 都匀市| 芜湖县| 东港市| 祥云县| 徐汇区| 合作市| 仙居县| 宜君县| 鄂托克旗| 宁明县| 肃南| 青神县| 集安市| 鄂尔多斯市| 两当县| 互助| 方城县| 弥勒县| 澎湖县| 鄂尔多斯市| 蕲春县| 佛冈县| 炎陵县| 博爱县| 于都县| 兴国县| 内黄县| 固安县| 思南县| 河南省| 富川| 齐河县|