首頁(yè)技術(shù)文章正文

Java接口怎樣使用?JDK8接口新特性詳解

更新時(shí)間:2023-08-31 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

接口可以理解為是一種規(guī)范,接口中的成員都是public修飾的,寫(xiě)不寫(xiě)都是,因?yàn)橐?guī)范的目的是為了公開(kāi)化。Java JDK8之前接口中只能是抽象方法和常量,沒(méi)有其他成分。但需要注意接口不能實(shí)例化。

接口的用法:

接口是用來(lái)被類(lèi)實(shí)現(xiàn)(implements)的,實(shí)現(xiàn)接口的類(lèi)稱(chēng)為實(shí)現(xiàn)類(lèi)。實(shí)現(xiàn)類(lèi)可以理解成所謂的子類(lèi)。

修飾符 class 實(shí)現(xiàn)類(lèi) implements 接口1, 接口2, 接口3 , ... {
}
實(shí)現(xiàn)的關(guān)鍵字:implements

從上面可以看出,接口可以被類(lèi)單實(shí)現(xiàn),也可以被類(lèi)多實(shí)現(xiàn),也就是一個(gè)接口可以繼承一個(gè)接口也可以同時(shí)繼承多個(gè)接口。但一個(gè)類(lèi)實(shí)現(xiàn)接口,必須重寫(xiě)完全部接口的全部抽象方法,否則這個(gè)類(lèi)需要定義成抽象類(lèi)。

JDK8開(kāi)始接口新增的方法

默認(rèn)方法

類(lèi)似之前寫(xiě)的普通實(shí)例方法必須用default修飾,默認(rèn)會(huì)public修飾。需要用接口的實(shí)現(xiàn)類(lèi)的對(duì)象來(lái)調(diào)用。

default void run(){
   System.out.println("--開(kāi)始跑--");
}

靜態(tài)方法

默認(rèn)會(huì)public修飾,必須static修飾。接口的靜態(tài)方法必須用本身的接口名來(lái)調(diào)用,靜態(tài)方法實(shí)現(xiàn)可以參考以下方法。

static void inAddr(){
   System.out.println("我們都在黑馬培訓(xùn)中心快樂(lè)的學(xué)習(xí)Java!");
}

私有方法

私有方法就是私有的實(shí)例方法:,必須使用private修飾,從JDK 1.9才開(kāi)始有的。只能在本類(lèi)中被其他的默認(rèn)方法或者私有方法訪問(wèn)。

private void go(){
    System.out.println("--準(zhǔn)備--");
}

JDK8版本開(kāi)始后,Java只對(duì)接口的成員方法進(jìn)行了新增,允許接口中直接定義帶有方法體的方法,原因是接口豐富后可能對(duì)子代碼進(jìn)行更改。
例如下面的項(xiàng)目,Version1.0 成功上線沒(méi)有問(wèn)題。

public interface Inter {
    …若干抽象方法
}
public class InterImplA implements Inter {}
public class InterImplB implements Inter {}

在項(xiàng)目Version2.0時(shí)需要擴(kuò)展功能,對(duì)Inter接口豐富,于是加入10個(gè)新的抽象方法,此時(shí)改了接口就要所有實(shí)現(xiàn)類(lèi)實(shí)現(xiàn)這些方法。

public interface Inter {
    …若干抽象方法
}
public class InterImplA implements Inter {}
public class InterImplB implements Inter {}

要豐富接口功能的同時(shí)又不對(duì)子類(lèi)代碼進(jìn)行更改。就要允許接口中直接定義帶有方法體的方法。

注意:JDK8新增的3種方法我們自己在開(kāi)發(fā)中很少使用,通常是Java源碼涉及到的,我們需要理解、識(shí)別語(yǔ)法、明白調(diào)用關(guān)系即可。


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!