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

深入理解Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法

 更新時(shí)間:2021年11月16日 09:23:03   作者:張起靈-小哥  
從Java8開始,程序允許在接口中包含帶有具體實(shí)現(xiàn)的方法,使用default修飾,這類方法就是默認(rèn)方法。默認(rèn)方法在接口中可以添加多個(gè),并且Java8提供了很多對(duì)應(yīng)的接口默認(rèn)方法,接下來(lái)讓我們一起來(lái)看看吧

1.接口中的默認(rèn)方法和靜態(tài)方法

Java 8中允許接口中包含具有具體實(shí)現(xiàn)的方法,該方法稱為 “默認(rèn)方法” ,默認(rèn)方法使用 default 關(guān)鍵字修飾。

接口默認(rèn)方法的 ” 類優(yōu)先 ” 原則。若一個(gè)接口中定義了一個(gè)默認(rèn)方法,而另外一個(gè)父類或接口中又定義了一個(gè)同名的方法時(shí)

  • 選擇父類中的方法。如果一個(gè)父類提供了具體的實(shí)現(xiàn),那么接口中具有相同名稱和參數(shù)的默認(rèn)方法會(huì)被忽略。
  • 接口沖突。如果一個(gè)父接口提供一個(gè)默認(rèn)方法,而另一個(gè)接口也提供了一個(gè)具有相同名稱和參數(shù)列表的方法(不管方法是否是默認(rèn)方法),那么必須覆蓋該方法來(lái)解決沖突。

同時(shí),Java8 中,允許接口中添加靜態(tài)方法(static)。

2.應(yīng)用舉例

package com.szh.java8;
 
/**
 *
 */
interface InterfaceOne {
 
    default String getMessage() {
        return "哈哈哈";
    }
 
    static void show() {
        System.out.println("接口中的靜態(tài)方法");
    }
}
 
interface InterfaceTwo {
    default String getMessage() {
        return "嘿嘿嘿";
    }
}
 
class ClassOne {
    public String getMessage() {
        return "呵呵呵";
    }
}
 
class SubClass1 extends ClassOne implements InterfaceOne {
 
}
 
class SubClass2 extends ClassOne implements InterfaceOne,InterfaceTwo {
 
}
 
class SubClass3 implements InterfaceOne,InterfaceTwo {
 
    @Override
    public String getMessage() {
        return InterfaceTwo.super.getMessage();
    }
 
}
 
public class TestClass {
 
    public static void main(String[] args) {
        SubClass1 sub1 = new SubClass1();
        System.out.println(sub1.getMessage());
 
        SubClass2 sub2 = new SubClass2();
        System.out.println(sub2.getMessage());
 
        SubClass3 sub3 = new SubClass3();
        System.out.println(sub3.getMessage());
 
        InterfaceOne.show();
    }
}

雖然SubClass1類繼承了ClassOne、同時(shí)實(shí)現(xiàn)了InterfaceOne,由于類優(yōu)先原則,所以這里執(zhí)行的是ClassOne類中的getMessage方法。

SubClass2與SubClass1是同樣的道理。

而SubClass3就不一樣了,它沒(méi)有繼承ClassOne這個(gè)類,而是同時(shí)實(shí)現(xiàn)了InterfaceOne、InterfaceTwo這兩個(gè)接口,那么它就必須選擇其中一個(gè)來(lái)對(duì)默認(rèn)方法進(jìn)行實(shí)現(xiàn)(覆蓋 / 重寫),實(shí)現(xiàn)的是哪個(gè)接口,相應(yīng)的就執(zhí)行哪個(gè)接口的默認(rèn)方法。

最后接口中的靜態(tài)方法就和類中的靜態(tài)方法一樣,直接 接口名.靜態(tài)方法名 就可以調(diào)用了。

到此這篇關(guān)于深入理解Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法的文章就介紹到這了,更多相關(guān)Java 新特性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java后臺(tái)發(fā)起get請(qǐng)求獲取響應(yīng)數(shù)據(jù)

    java后臺(tái)發(fā)起get請(qǐng)求獲取響應(yīng)數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了java后臺(tái)發(fā)起get請(qǐng)求獲取響應(yīng)數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 在Java的Hibernate框架中使用SQL語(yǔ)句的簡(jiǎn)單介紹

    在Java的Hibernate框架中使用SQL語(yǔ)句的簡(jiǎn)單介紹

    這篇文章主要介紹了在Java的Hibernate框架中使用SQL語(yǔ)句的方法,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01
  • Java try catch finally異常處理組合詳解

    Java try catch finally異常處理組合詳解

    這篇文章主要介紹了Java try catch finally異常處理組合詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 如何基于js及java分析并封裝排序算法

    如何基于js及java分析并封裝排序算法

    這篇文章主要介紹了如何基于js及java分析并封裝排序算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • springboot 整合 nacos 配置實(shí)現(xiàn)多個(gè)環(huán)境不同配置

    springboot 整合 nacos 配置實(shí)現(xiàn)多個(gè)環(huán)境不同配置

    本文介紹了Nacos配置中心的優(yōu)勢(shì),包括與Apollo的性能對(duì)比,Nacos服務(wù)端的安裝與配置,以及如何在SpringBoot項(xiàng)目中集成Nacos進(jìn)行多環(huán)境配置,提供了詳細(xì)的步驟,包括下載、安裝、配置中心的創(chuàng)建和項(xiàng)目集成,旨在幫助開發(fā)者更好地使用Nacos進(jìn)行項(xiàng)目配置管理
    2024-09-09
  • 解析Runtime中shutdown hook的使用詳解

    解析Runtime中shutdown hook的使用詳解

    本篇文章是對(duì)解析Runtime中shutdown hook的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • SpringMVC的ModelAndView傳值方法

    SpringMVC的ModelAndView傳值方法

    今天小編就為大家分享一篇SpringMVC的ModelAndView傳值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 基于feign傳參MultipartFile問(wèn)題解決

    基于feign傳參MultipartFile問(wèn)題解決

    這篇文章主要介紹了基于feign傳參MultipartFile問(wèn)題解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring Kafka中@KafkaListener注解的參數(shù)與使用小結(jié)

    Spring Kafka中@KafkaListener注解的參數(shù)與使用小結(jié)

    @KafkaListener注解為開發(fā)者提供了一種聲明式的方式來(lái)定義消息監(jiān)聽器,本文主要介紹了Spring Kafka中@KafkaListener注解的參數(shù)與使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • linux下執(zhí)行java程序的sh腳本分享

    linux下執(zhí)行java程序的sh腳本分享

    這篇文章主要介紹了linux下執(zhí)行java程序的sh腳本,僅供參考,但是設(shè)置的時(shí)候環(huán)境變量是最重要的,我就是環(huán)境變量一直不對(duì),總是按網(wǎng)上查到的來(lái),不明白怎么回事,才一直出錯(cuò),其實(shí)環(huán)境變量就是你要執(zhí)行的java程序所在的位置
    2014-09-09

最新評(píng)論

漳浦县| 灌阳县| 当雄县| 微博| 碌曲县| 巫溪县| 山东省| 八宿县| 辽阳县| 长岛县| 沾益县| 德州市| 昆山市| 陆良县| 永泰县| 潮州市| 临武县| 仙游县| 乌拉特后旗| 共和县| 梁河县| 正镶白旗| 西丰县| 镇原县| 广汉市| 柏乡县| 高州市| 丹棱县| 南安市| 铁岭县| 盐源县| 周宁县| 台州市| 靖远县| 临西县| 西乡县| 理塘县| 喀喇沁旗| 山丹县| 环江| 宜黄县|