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

Java8新特性之接口中的默認方法和靜態(tài)方法詳解

 更新時間:2021年06月09日 16:18:54   作者:貓巳  
今天帶大家學習的是Java8新特性的相關(guān)知識,文章圍繞著Java接口中的默認方法和靜態(tài)方法展開,文中有非常詳細的的代碼示例,需要的朋友可以參考下

一、前言

Java 8 引入了默認方法以及可以在接口中定義的靜態(tài)方法。

默認方法是一個普通的 java 方法,但以 default 關(guān)鍵字開頭,靜態(tài)方法像往常一樣用 static 關(guān)鍵字聲明。

二、為什么在 Java 接口中使用默認方法?

為什么java在接口中引入了默認方法。

假設(shè)一個拖拉機制造公司發(fā)布了操作拖拉機的標準接口,如如何掛擋或停車等。

開發(fā)者已經(jīng)開發(fā)了不同類型的拖拉機來實現(xiàn)標準的拖拉機接口。

如果公司在其標準接口中增加了新的功能,如如何跳動拖拉機?

開發(fā)者需要對他們的類進行修改以定義新的方法,這不是一個好辦法。

現(xiàn)在我們需要默認方法來處理這種情況,以避免重寫所有實現(xiàn)標準拖拉機接口的類。

在接口中定義默認方法,它將在所有實現(xiàn)拖拉機接口的類中可用。

三、為什么在 Java 接口中使用靜態(tài)方法?

Java 8 開始,接口可以具有靜態(tài)方法。

靜態(tài)方法與類相關(guān)聯(lián),而不與對象相關(guān)聯(lián)。靜態(tài)方法用作輔助方法。

所以如果我們在接口中聲明靜態(tài)方法,我們很容易組織我們的輔助方法。

四、場景一:接口中的默認方法

為了理解使用默認方法,我創(chuàng)建了一個接口 Village,它有一些方法聲明和一個默認方法。

默認方法以 default 關(guān)鍵字開頭。

默認情況下,接口的所有方法都是公共的,因此無需使用 public 關(guān)鍵字來聲明和定義接口中的方法。

Village.java

public interface Village {
    void setNumOfPeople(int num);
    void setName(String name);
    default String getBusinessType(){
        return "Most of the Village people do Farming";
    }
}

創(chuàng)建一個將實現(xiàn) Village 接口的 Location 類。

默認方法將自動在此類中可用。

Location.java

public class Location implements Village {
    public int noOfPeople;
    public String name;
    @Override
    public void setNumOfPeople(int n){
        this.noOfPeople = n;
    }
    @Override
    public void setName(String name){
        this.name = name;
    }
}

為了測試這個方案,創(chuàng)建一個Main類并通過Location對象訪問默認方法。

Main.java

public class Main {
    public static void main(String[] args){
        Location lo = new Location();
        System.out.println(lo.getBusinessType());
    }    
}

輸出

Most of the Village people do Farming

五、場景二:接口中的靜態(tài)方法

現(xiàn)在我們也可以在接口中編寫靜態(tài)方法。在我們的Village接口中,我已經(jīng)將getVillageId()聲明為一個靜態(tài)方法。

這個靜態(tài)方法也可以在默認方法中被訪問。

public interface Village {
    void setNumOfPeople(int num);
    void setName(String name);
    static int getVillageId(){
        return 1;
    }
    default String getBusinessType(){
        return "Business type is Farming  and village id:"+getVillageId();
    }
}

我對Location類做一些修改,以使用靜態(tài)方法。

我們可以通過接口名稱來使用靜態(tài)方法。

public class Location implements Village {
    public int noOfPeople;
    public String name;
    @Override
    public void setNumOfPeople(int n){
        this.noOfPeople = n;
    }
    @Override
    public void setName(String name){
        this.name = name;
    }
    public int getLocationId(){
        return Village.getVillageId();
    }

Main.java

public class Main {
    public static void main(String[] args){
        Location lo = new Location();
        System.out.println(lo.getBusinessType());
        System.out.println("Village id:"+Village.getVillageId());
        System.out.println("Location Id:"+lo.getLocationId());
    }    
}

輸出

Business type is Farming  and village id:1
Village id:1
Location Id:1

六、情景三:多重繼承 - 在兩個接口中使用相同名稱的默認方法

在多重繼承的情況下,一個類實現(xiàn)了不止一個接口,我們需要檢查默認方法的行為方式。

現(xiàn)在我正在創(chuàng)建一個包含getBusinessType()默認方法的接口。

City.java

public interface City {
    void setName(String name);
    void setArea(int area);
    default String getBusinessType(){
        return "Service";
    }
}

對于多重繼承,Location類將同時實現(xiàn)VillageCity接口。

由于VillageCity都包含同名的缺省方法,所以由于存在歧義,Location類將強制在類中明確定義缺省方法。

除非我們定義一個與默認方法同名的方法,否則Location類將不會被編譯。

Location.java

public class Location implements Village, City {
    public int noOfPeople;
    public String name;
     public int area;
    @Override
    public void setNumOfPeople(int n){
        this.noOfPeople = n;
    }
    @Override
    public void setName(String name){
        this.name = name;
    }
    @Override
    public void setArea(int area){
        this.area = area; 
    }
    @Override
    public String getBusinessType(){
        return "People do business like Farming and Service.";
    }
    public int getLocationId(){
        return Village.getVillageId();
    }
}

輸出

People do business like Farming and Service.
Village id:1
Location Id:1

七、參考文獻

【1】Java 8 Default and Static Method in Interface

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

相關(guān)文章

  • Java通過SSH連接路由器輸入命令并讀取響應(yīng)的操作方法

    Java通過SSH連接路由器輸入命令并讀取響應(yīng)的操作方法

    最近需要讀取和修改華為路由器的配置,使用Java語言開發(fā),通過SSH連接,輸入命令并讀取響應(yīng),接下來通過本文給大家介紹下Java通過SSH連接路由器,輸入命令并讀取響應(yīng),需要的朋友可以參考下
    2024-01-01
  • Java控制臺版五子棋的簡單實現(xiàn)方法

    Java控制臺版五子棋的簡單實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Java控制臺版五子棋的簡單實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java中Volatile關(guān)鍵字詳解及代碼示例

    Java中Volatile關(guān)鍵字詳解及代碼示例

    這篇文章主要介紹了Java中Volatile關(guān)鍵字詳解及代碼示例,分為兩個部分,第一部分介紹了Volatile關(guān)鍵字的基本概念等內(nèi)容,第二部分分享了實例代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • rocketmq client 日志的問題處理方式

    rocketmq client 日志的問題處理方式

    這篇文章主要介紹了rocketmq client 日志的問題處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • spring聲明式事務(wù)管理解析

    spring聲明式事務(wù)管理解析

    這篇文章主要為大家詳細介紹了spring聲明式事務(wù)管理,對spring事務(wù)管理進行深入了解,感興趣的小伙伴們可以參考一下
    2016-10-10
  • java駝峰轉(zhuǎn)換的方法

    java駝峰轉(zhuǎn)換的方法

    這篇文章主要為大家詳細介紹了java駝峰轉(zhuǎn)換的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • SpringBoot3整合Swagger3時出現(xiàn)Type javax.servlet.http.H的ttpServletRequest not present錯誤解決方法

    SpringBoot3整合Swagger3時出現(xiàn)Type javax.servlet.http.H的ttpSe

    這篇文章主要介紹了SpringBoot3整合Swagger3時出現(xiàn)Type javax.servlet.http.H的ttpServletRequest not present錯誤解決方法,文中有詳細的解決方法,需要的朋友可以參考下
    2025-01-01
  • List轉(zhuǎn)變?yōu)槎禾柗指舻腟tring(Java7和Java8分別實現(xiàn))

    List轉(zhuǎn)變?yōu)槎禾柗指舻腟tring(Java7和Java8分別實現(xiàn))

    這篇文章主要介紹了Java7和Java8分別實現(xiàn)List轉(zhuǎn)變?yōu)槎禾柗指舻腟tring,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • JAVA找不到符號的三種解決方案

    JAVA找不到符號的三種解決方案

    這篇文章主要給大家介紹了關(guān)于JAVA找不到符號的三種解決方案, 找不到符號錯誤主要發(fā)生在我們試圖引用一個未在我們正在編譯的程序中聲明的變量時,這意味著編譯器不知道我們所引用的Java變量,需要的朋友可以參考下
    2024-03-03
  • java如何通過Kerberos認證方式連接hive

    java如何通過Kerberos認證方式連接hive

    該文主要介紹了如何在數(shù)據(jù)源管理功能中適配不同數(shù)據(jù)源(如MySQL、PostgreSQL和Hive),特別是如何在SpringBoot3框架下通過Kerberos認證與Hive進行安全交互,文章詳細描述了Kerberos認證過程,包括配置krb5.conf和keytab文件、處理Hadoop和Hive版本兼容性問題
    2025-02-02

最新評論

五指山市| 高雄市| 宝坻区| 大安市| 重庆市| 鱼台县| 基隆市| 老河口市| 临海市| 且末县| 太仆寺旗| 错那县| 门源| 绩溪县| 内黄县| 昌都县| 临漳县| 师宗县| 东乡族自治县| 八宿县| 敦煌市| 延安市| 萨嘎县| 马公市| 阳西县| 土默特右旗| 治县。| 东宁县| 长武县| 靖江市| 延安市| 桐庐县| 贡嘎县| 无锡市| 南江县| 罗源县| 西和县| 海伦市| 犍为县| 凉山| 岑巩县|