欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、default修飾接口中的方法

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

在這里插入圖片描述

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

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

在這里插入圖片描述

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

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

在這里插入圖片描述

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

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

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

還有兩個要注意的點

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

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方法沖突的三步驟:

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

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

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

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

于是引出我對此的理解。

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

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

在Java的設計中,經??梢钥吹絻烧呓M合起來使用。如Servlet

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

在這里插入圖片描述

可以發(fā)現,抽象類GenericServlet實現了Servlet接口。

接口的好處是什么?

規(guī)范。

抽象類的好處是什么?

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

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

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

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

相關文章

  • javaweb實戰(zhàn)之商城項目開發(fā)(三)

    javaweb實戰(zhàn)之商城項目開發(fā)(三)

    這篇文章主要針對javaweb商城項目開發(fā)進行實戰(zhàn)演習,主要實現通用的BaseDao.java和使用resultMap映射關聯對象,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Spring配置文件中parent與abstract的使用

    Spring配置文件中parent與abstract的使用

    這篇文章主要介紹了Spring配置文件中parent與abstract的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 四種Springboot常見全局時間格式化方式

    四種Springboot常見全局時間格式化方式

    這篇文章主要為大家詳細介紹了Springboot實現全局時間格式化的四種常見方式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • IDEA2022 提示更新 TKK失敗請檢查網絡連接的問題

    IDEA2022 提示更新 TKK失敗請檢查網絡連接的問題

    這篇文章主要介紹了IDEA2022 提示:更新 TKK 失敗,請檢查網絡連接,本文給大家分享解決方案,對idea2022提示更新TKK失敗感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Java I/O深入學習之File和RandomAccessFile

    Java I/O深入學習之File和RandomAccessFile

    這篇文章主要介紹了Java I/O深入學習之File和RandomAccessFile, I/O系統(tǒng)即輸入/輸出系統(tǒng),對于一門程序語言來說,創(chuàng)建一個好的輸入/輸出系統(tǒng)并非易事。在充分理解Java I/O系統(tǒng)以便正確地運用之前,我們需要學習相當數量的類。,需要的朋友可以參考下
    2019-06-06
  • java導出生成csv文件的方法

    java導出生成csv文件的方法

    這篇文章主要為大家詳細介紹了java導出生成csv文件的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java 函數編程詳細介紹

    Java 函數編程詳細介紹

    這篇文章主要介紹了Java函數式編程,lambda表達式可以被認為是一個匿名函數,可以在函數接口的上下文中使用。函數接口是只指定一個抽象方法的接口,下面來看文章的詳細內容,需要的朋友可以參考下
    2021-11-11
  • Java深入講解AWT實現事件處理流程

    Java深入講解AWT實現事件處理流程

    AWT的事件處理是一種委派式事件處理方式:普通組件(事件源)將整個事件處理委托給特定的對象(事件監(jiān)聽器);當該事件源發(fā)生指定的事件時,就通知所委托的事件監(jiān)聽器,由事件監(jiān)聽器來處理這個事件
    2022-04-04
  • Linux 下通過 java 命令啟動 jar 包常見方式小結

    Linux 下通過 java 命令啟動 jar 包常見方式小結

    這篇文章主要介紹了Linux 下通過 java 命令啟動 jar 包常見方式小結,后臺啟動jar包命令大致有五種,每種方式結合代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2023-12-12
  • SpringBoot集成cache緩存的實現

    SpringBoot集成cache緩存的實現

    日常開發(fā)中,緩存是解決數據庫壓力的一種方案,本文記錄springboot中使用cache緩存。需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06

最新評論