更新時間:2020-10-20 17:51:23 來源:動力節(jié)點 瀏覽1561次
Java接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現(xiàn),因此這些方法可以在不同的地方被不同的類實現(xiàn),而這些實現(xiàn)可以具有不同的行為(功能)。某種程度上可以把接口看成是一個特殊的類,所以在定義接口的時候需要我們注意一些接口的特性,防止出錯。下面和大家一起來看看定義接口注意事項。
接口中允許定義 default 方法也是從 Java 8 開始的,比如說 printDescription(),它始終由一個代碼塊組成,為實現(xiàn)該接口而不覆蓋該方法的類提供默認實現(xiàn),也就是說,無法直接使用一個“;”號來結(jié)束默認方法——編譯器會報錯的。
允許在接口中定義默認方法的理由是很充分的,因為一個接口可能有多個實現(xiàn)類,這些類就必須實現(xiàn)接口中定義的抽象類,否則編譯器就會報錯。假如我們需要在所有的實現(xiàn)類中追加某個具體的方法,在沒有 default 方法的幫助下,我們就必須挨個對實現(xiàn)類進行修改。
來看一下 Electronic 接口反編譯后的字節(jié)碼吧,你會發(fā)現(xiàn),接口中定義的所有變量或者方法,都會自動添加上 public 關(guān)鍵字——假如你想知道編譯器在背后都默默做了哪些輔助,記住反編譯字節(jié)碼就對了,用實例看一下,接口定義注意事項如何在實際運用中避免。
public interface Electronic
{
public abstract int getElectricityUse();
public static boolean isEnergyEfficient(String electtronicType)
{
return electtronicType.equals("LED");
}
public void printDescription()
{
System.out.println("\u7535\u5B50");
}
public static final String LED = "LED";
}
由上面的例子我們就可以得出下面這些結(jié)論:
· 接口中允許定義變量
· 接口中允許定義抽象方法
· 接口中允許定義靜態(tài)方法(Java 8 之后)
· 接口中允許定義默認方法(Java 8 之后)
除此之外,我們還應該知道以下這些接口定義注意事項也很重要:
1.接口不允許直接實例化。

需要定義一個類去實現(xiàn)接口,然后再實例化。
public class Computer implements Electronic {
public static void main(String[] args) {
new Computer();
}
@Override
public int getElectricityUse() {
return 0;
}
}
2.接口可以是空的,既不定義變量,也不定義方法。
public interface Serializable {
}
3.不要在定義接口的時候使用 final 關(guān)鍵字,否則會報編譯錯誤,因為接口就是為了讓子類實現(xiàn)的,而 final 阻止了這種行為。

4.接口的抽象方法不能是 private、protected 或者 final。



5. 接口的變量是隱式 public static final,所以其值無法改變。
當然,我們在實際定義接口的過程中也許沒有充分的時間去考慮到以上提到的接口定義注意事項。那么只能在日常定義接口的操作中養(yǎng)成良好的習慣,避免出現(xiàn)定義接口報錯的情況。這些Java基礎中需要注意的細節(jié)在本站的Java基礎教程中都會有詳細的解答,不會一帶而過,本著嚴謹求實的態(tài)度,我們才能學有所成!