Java接口(interface)是一種特殊的抽象類(lèi)型,它定義了一組方法和常量,但不提供實(shí)現(xiàn)。接口只包含方法的聲明,不包含方法的實(shí)現(xiàn)。實(shí)現(xiàn)接口的類(lèi)需要提供接口中所有方法的具體實(shí)現(xiàn)。
以下是Java接口的語(yǔ)法規(guī)則:
接口聲明:使用interface
關(guān)鍵字聲明一個(gè)接口,接口名稱(chēng)通常以大寫(xiě)字母I
開(kāi)頭,表示這是一個(gè)接口。例如:
public interface MyInterface {
// 方法聲明和常量定義
}
方法聲明:接口中的方法都是抽象方法,不能有方法體。方法聲明后面不需要分號(hào)。方法的訪(fǎng)問(wèn)修飾符默認(rèn)為public
,不能使用其他訪(fǎng)問(wèn)修飾符。例如:
void myMethod();
常量定義:接口中可以定義常量,常量的值在定義時(shí)必須初始化,且不能被修改。常量的訪(fǎng)問(wèn)修飾符默認(rèn)為public static final
,不能使用其他訪(fǎng)問(wèn)修飾符。例如:
int MY_CONSTANT = 42;
接口繼承:接口可以繼承其他接口,使用extends
關(guān)鍵字。一個(gè)接口可以繼承多個(gè)接口,用逗號(hào)分隔。例如:
public interface MyInterface extends ParentInterface1, ParentInterface2 {
// 方法聲明和常量定義
}
實(shí)現(xiàn)接口:類(lèi)可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,使用implements
關(guān)鍵字。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,用逗號(hào)分隔。實(shí)現(xiàn)接口的類(lèi)必須提供接口中所有方法的具體實(shí)現(xiàn)。例如:
public class MyClass implements MyInterface {
// 實(shí)現(xiàn)接口中的方法
public void myMethod() {
// 方法實(shí)現(xiàn)
}
}
接口中的默認(rèn)方法:從Java 8開(kāi)始,接口可以包含默認(rèn)方法(default method),這是一種帶有默認(rèn)實(shí)現(xiàn)的方法。默認(rèn)方法使用default
關(guān)鍵字聲明。例如:
public interface MyInterface {
default void myDefaultMethod() {
System.out.println("This is a default method.");
}
}
實(shí)現(xiàn)接口的類(lèi)可以選擇覆蓋默認(rèn)方法,也可以選擇繼承默認(rèn)方法的實(shí)現(xiàn)。
接口中的靜態(tài)方法:從Java 8開(kāi)始,接口可以包含靜態(tài)方法。靜態(tài)方法使用static
關(guān)鍵字聲明。例如:
public interface MyInterface {
static void myStaticMethod() {
System.out.println("This is a static method.");
}
}
調(diào)用靜態(tài)方法時(shí),需要使用接口名稱(chēng),而不是實(shí)現(xiàn)接口的類(lèi)名。例如:MyInterface.myStaticMethod();
接口中的私有方法:從Java 9開(kāi)始,接口可以包含私有方法。私有方法使用private
關(guān)鍵字聲明,只能在接口內(nèi)部使用。例如:
public interface MyInterface {
private void myPrivateMethod() {
System.out.println("This is a private method.");
}
}
私有方法可以被默認(rèn)方法和靜態(tài)方法調(diào)用。