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

Java中間的接口用法詳解

 更新時間:2023年07月21日 10:20:13   作者:二進(jìn)制狂人  
Java 程序員都知道要面向接口編程,那 Java? 中的接口除了定義接口方法之外還能怎么用你知道嗎,今天小編就來帶大家看一下 Java 中間的接口還可以有哪些用法,需要的朋友可以參考下

基本特性

我們先看一下接口的基本特性

  • 接口的定義需要使用關(guān)鍵字interface;
  • 接口定義的所有方法默認(rèn)都是public abstract;
  • 當(dāng)一個具體的class? 去實現(xiàn)一個interface?時,需要使用implements 關(guān)鍵字;
  • 接口之間是可以多繼承,而類是只能單繼承的;

如下所示,我們定義一個接口;

package com.example.demo.inter;
import java.io.Serializable;
import java.util.RandomAccess;
public interface ITest extends Serializable, RandomAccess {
  public abstract String sayHello();
  String sayHello2();
}

默認(rèn)方法

在 JDK 8? 之前接口是不支持默認(rèn)方法的,在 JDK 8? 之后接口支持默認(rèn)方法,默認(rèn)方法采用關(guān)鍵詞 default 聲明。

public interface ITest extends Serializable, RandomAccess {
  public abstract String sayHello();
  String sayHello2();
  default String sayHello3() {
    return "hello3";
  }
}

默認(rèn)方法跟抽象方法不一樣,接口中定義的抽象方法,當(dāng)接口被其他類實現(xiàn)的時候都需要全部實現(xiàn),但是默認(rèn)方法是不需要被實現(xiàn)就可以直接使用的,類似于直接調(diào)用父類的方法一樣,所以在很多時候,我們已經(jīng)繼承了一個類,還想有一個能用但是不想每個子類都實現(xiàn)的方法的時候,就可以考慮增加一個接口的默認(rèn)方法來使用,簡單來說就是實現(xiàn)類可以不覆寫 default 方法。

default方法存在的目的是,在我們已經(jīng)完善的項目中,如果我們直接給一個接口增加一個方法,在沒有默認(rèn)方法的時候就需要給所有的實現(xiàn)類都實現(xiàn)對應(yīng)的方法,但是這個方法又不一定是每個實現(xiàn)類都需要的,所以這個時候默認(rèn)方法就很好的解決了這個問題,我們只需要增加一個默認(rèn)方法,然后在需要使用的實現(xiàn)類中進(jìn)行實現(xiàn)或者使用就可以了,其他的實現(xiàn)類不需要改動任何的代碼。

標(biāo)記

接口還有一個很常見的功能那就是標(biāo)記功能,這么說可能你沒有印象,但是提到序列化接口 java.io.Serializable;? 你肯定知道,我們經(jīng)常在對應(yīng)的 POJO 中都會實現(xiàn)這個序列化接口,而這個序列化的接口如果看過源碼的小伙伴肯定知道里面是沒有內(nèi)容的。

同樣的功能除了序列化的接口,類似的空間接口還有很多,比如 java.util.RandomAccess? 也是空間接口,之前阿粉也寫過關(guān)于 RandomAccess? 這個接口的用途,感興趣的可以再去看看。RandomAccess 明明是個空接口,能有什么用呢?

通過源碼我們可以知道 RandomAccess 是用來標(biāo)識子類是否實現(xiàn)了該接口,如果實現(xiàn)了則走實現(xiàn)了的邏輯,沒有實現(xiàn)就走沒有實現(xiàn)的邏輯,所以我們在日常開發(fā)中也可以利用這個特性,當(dāng)我們有不同的子類需要根據(jù)情況進(jìn)行不同的實現(xiàn)邏輯的時候就可以采用定義一個空接口來標(biāo)記一下,方便后面的處理。

靜態(tài)方法

跟默認(rèn)方法一樣,JDK 8 還支持在接口中增加靜態(tài)方法,雖然說在接口中定義靜態(tài)方法的做法不常見,但是當(dāng)需要使用的時候也是可以支持的,避免在創(chuàng)建一個單獨的工具類,跟在類中定義的靜態(tài)方法一樣,我們可以直接通過接口名稱引用靜態(tài)方法,當(dāng)然靜態(tài)變量也是可以的,使用方法一樣。

public interface ITest extends Serializable, RandomAccess {
  public abstract String sayHello();
  String sayHello2();
  default String sayHello3() {
    System.out.println(sayHello4());
    return "hello3";
  }
  public static String sayHello4() {
    return "hello4";
  }
}

私有方法

大家有沒有注意到,上面不管是默認(rèn)方法還是靜態(tài)方法其實都是 public? 公開的,可以讓實現(xiàn)類或者其他類直接使用,那有沒有可能在接口中定義一個私有方法呢?在 JDK 9? 之前是不可以的,JDK 9 卻支持了,如下所示

private void privateMethod() {
    System.out.println("private私有方法被調(diào)用");
  }
  private static void privateStaticMethod() {
    System.out.println("private私有靜態(tài)方法被調(diào)用");
  }

從官方的文檔中我們可以找到下面的描述,在 JDK 9 中接口支持私有方法,主要用于不同的非抽象方法中共享代碼。

我們可以看到在 JDK 9 這樣寫是可以的

但是在 JDK8? 就不行了,是無法編譯通過的,會提示不允許使用 private 修飾符。

總結(jié)

今天小編給大家總結(jié)了一個接口的使用方法,后面在日常的開發(fā)中我們不單單只是在接口中定義抽象方法,也可以根據(jù)需求增加默認(rèn)方法或者私有方法,以及在需要用到標(biāo)記的時候也可以通過定義一個空接口來實現(xiàn),怎么樣是不是很棒,感覺動起來吧

以上就是Java中間的接口用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Java中間接口的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中LocalDate的詳細(xì)方法舉例總結(jié)

    Java中LocalDate的詳細(xì)方法舉例總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java中LocalDate詳細(xì)方法舉例的相關(guān)資料,LocalDate主要是用來處理日期的類,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • 學(xué)生視角帶你了解Java內(nèi)部類

    學(xué)生視角帶你了解Java內(nèi)部類

    說起內(nèi)部類這個詞,想必很多人都不陌生,但是又會覺得不熟悉。原因是平時編寫代碼時可能用到的場景不多,用得最多的是在有事件監(jiān)聽的情況下,并且即使用到也很少去總結(jié)內(nèi)部類的用法。今天我們就來一探究竟
    2022-03-03
  • Java輸入處理的常見錯誤小結(jié)

    Java輸入處理的常見錯誤小結(jié)

    在?Java?編程中,輸入處理是一個基礎(chǔ)但又復(fù)雜的任務(wù),尤其是在涉及到與用戶交互時,本文將對?Java?輸入處理的基本機(jī)制進(jìn)行詳細(xì)解析,需要的可以了解下
    2024-11-11
  • JAVA實現(xiàn)監(jiān)測tomcat是否宕機(jī)及控制重啟的方法

    JAVA實現(xiàn)監(jiān)測tomcat是否宕機(jī)及控制重啟的方法

    這篇文章主要介紹了JAVA實現(xiàn)監(jiān)測tomcat是否宕機(jī)及控制重啟的方法,可實現(xiàn)有效的檢測及控制tomcat服務(wù)器運行,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • java  BASE64Encoder詳細(xì)介紹及簡單實例

    java BASE64Encoder詳細(xì)介紹及簡單實例

    這篇文章主要介紹了java BASE64Encoder詳細(xì)介紹及簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Java中JSON字符串進(jìn)行各種轉(zhuǎn)換的方法小結(jié)

    Java中JSON字符串進(jìn)行各種轉(zhuǎn)換的方法小結(jié)

    Gson和Hutool的JSONUtil都是常用的用于處理JSON數(shù)據(jù)的工具庫,它們提供了簡單易用的API來進(jìn)行JSON字符串的解析、轉(zhuǎn)換和操作,下面就跟隨小編一起學(xué)習(xí)一下如果使用他們實現(xiàn)JSON字符串的各種轉(zhuǎn)換吧
    2024-01-01
  • java處理數(shù)據(jù)庫不支持的emoji表情符問題解決

    java處理數(shù)據(jù)庫不支持的emoji表情符問題解決

    這篇文章主要介紹了java處理數(shù)據(jù)庫不支持的emoji表情符問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • java?Spring的啟動原理詳解

    java?Spring的啟動原理詳解

    大家好,本篇文章主要講的是java?Spring的啟動原理詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 基于java構(gòu)造方法Vector修改元素源碼分析

    基于java構(gòu)造方法Vector修改元素源碼分析

    本篇文章是關(guān)于ava構(gòu)造方法Vector源碼分析系列文章,本文主要介紹了Vector修改元素的源碼分析,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • Java實現(xiàn)九九乘法表的小例子

    Java實現(xiàn)九九乘法表的小例子

    九九乘法表一般為三角形,每個數(shù)分別和從1到自身的數(shù)相乘然后把結(jié)果列出來,即要用到兩層循環(huán),外層是從1到9for(i=1;i<=9;i++),內(nèi)層是當(dāng)前數(shù)和從1到自身相乘for(j=1;j<=i;j++)
    2013-09-09

最新評論