接口不是類,尤其是絕對不能使用new 操作符實例化接口;
Module md=new Module()//錯誤
不過,雖然不能構造接口對象,但還是可以聲明接口變量。
Module md;
接口變量必須指向一個實現了該接口的類的對象;
x=new MotorModule();//只要實現了Module就對了
可以用instanceof來檢驗對象是否實現了某個接口(只要它屬于的類或者父類實現了某個接口都可以);
if(anObject instanceof Module){...}
接口在軟件發布的時候是向用戶公開的,用戶可以通過調用實現接口的類的接口方法,而如果不實現接口用戶是不能調用的。
也就是我們常可以聽到的服務提供商這樣說:"如果你們的類遵循一個特定的接口,那么我們將執行這些服務
java 接口的使用舉例
//以下程序說明 并不嚴謹,只是為了方便初學者初步的理解接口的應用
interface Interface???????? //接口?? {
String ShowMessage(String MSG);? //接口方法,因為接口方法默認是public abstract 所以這里可以不用顯示書寫
}
class ClassItf implements Interface?? //全部實現了接口interface類的方法;
{
public ClassItf()
{
//構造函數
}
public String ShowMessage(String MSG)? //實現接口方法ShowMessage()
{
System.out.print(MSG);
return MSG;
}
}
/*?? usingItf 類調用了接口方法,來實施某一些功能,但是具體的操作有接口實現類來操作,
將必要的數據通信給接口,實現了數據的通信;? 這里如此說明并不嚴謹,只是便于初學者理解
*/
class usingItf?? //"驅動類"
{
public String getstring;
public void usingItf(Interface inf,String MSG)? //使用了接口定義的方法 注意:使用了Interface 的引用 inf
{
getstring=inf.ShowMessage(MSG);
}
}
public class Test????? //Test函數
{
public static void main(String args[])
{
ClassItf newClassItf=new ClassItf();
usingItf aa =new usingItf();
aa.usingItf(newClassItf,"This is the firstpage!!!!"); // 注意這里傳遞的接口實現類的實例,還有參數 class usingItf
}
}