更新時(shí)間:2020-10-20 17:51:23 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1343次
Java接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒(méi)有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)。某種程度上可以把接口看成是一個(gè)特殊的類,所以在定義接口的時(shí)候需要我們注意一些接口的特性,防止出錯(cuò)。下面和大家一起來(lái)看看定義接口注意事項(xiàng)。
接口中允許定義 default 方法也是從 Java 8 開(kāi)始的,比如說(shuō) printDescription(),它始終由一個(gè)代碼塊組成,為實(shí)現(xiàn)該接口而不覆蓋該方法的類提供默認(rèn)實(shí)現(xiàn),也就是說(shuō),無(wú)法直接使用一個(gè)“;”號(hào)來(lái)結(jié)束默認(rèn)方法——編譯器會(huì)報(bào)錯(cuò)的。
允許在接口中定義默認(rèn)方法的理由是很充分的,因?yàn)橐粋€(gè)接口可能有多個(gè)實(shí)現(xiàn)類,這些類就必須實(shí)現(xiàn)接口中定義的抽象類,否則編譯器就會(huì)報(bào)錯(cuò)。假如我們需要在所有的實(shí)現(xiàn)類中追加某個(gè)具體的方法,在沒(méi)有 default 方法的幫助下,我們就必須挨個(gè)對(duì)實(shí)現(xiàn)類進(jìn)行修改。
來(lái)看一下 Electronic 接口反編譯后的字節(jié)碼吧,你會(huì)發(fā)現(xiàn),接口中定義的所有變量或者方法,都會(huì)自動(dòng)添加上 public 關(guān)鍵字——假如你想知道編譯器在背后都默默做了哪些輔助,記住反編譯字節(jié)碼就對(duì)了,用實(shí)例看一下,接口定義注意事項(xiàng)如何在實(shí)際運(yùn)用中避免。
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 之后)
· 接口中允許定義默認(rèn)方法(Java 8 之后)
除此之外,我們還應(yīng)該知道以下這些接口定義注意事項(xiàng)也很重要:
1.接口不允許直接實(shí)例化。
需要定義一個(gè)類去實(shí)現(xiàn)接口,然后再實(shí)例化。
public class Computer implements Electronic {
public static void main(String[] args) {
new Computer();
}
@Override
public int getElectricityUse() {
return 0;
}
}
2.接口可以是空的,既不定義變量,也不定義方法。
public interface Serializable {
}
3.不要在定義接口的時(shí)候使用 final 關(guān)鍵字,否則會(huì)報(bào)編譯錯(cuò)誤,因?yàn)榻涌诰褪菫榱俗屪宇悓?shí)現(xiàn)的,而 final 阻止了這種行為。
4.接口的抽象方法不能是 private、protected 或者 final。
5. 接口的變量是隱式 public static final,所以其值無(wú)法改變。
當(dāng)然,我們?cè)趯?shí)際定義接口的過(guò)程中也許沒(méi)有充分的時(shí)間去考慮到以上提到的接口定義注意事項(xiàng)。那么只能在日常定義接口的操作中養(yǎng)成良好的習(xí)慣,避免出現(xiàn)定義接口報(bào)錯(cuò)的情況。這些Java基礎(chǔ)中需要注意的細(xì)節(jié)在本站的Java基礎(chǔ)教程中都會(huì)有詳細(xì)的解答,不會(huì)一帶而過(guò),本著嚴(yán)謹(jǐn)求實(shí)的態(tài)度,我們才能學(xué)有所成!
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743