介面申明必須有interface關鍵字和介面的名字,public指明任意類均可以使用這個介面,預設情況下,只有與該介面定義在同一個包中的類才可以訪問這個介面。extends 與類申明中的extends 基本相同,不同的是一個介面可以有多個父介面,用逗號隔開。而一個類只能有一個父類。子介面繼承介面中所有的常量和方法。在類的申明中用implements來表示一個類實現某個介面,在類體中可以使用介面中定義的.常量,而且必須實現介面中定義的所有方法(可以是空的實現但一定要實現),否則該類就是一個抽象類。一個類可以實現多個介面。介面的作用,一言以蔽之,就是標誌類的類別(type of class)。把不同型別的類歸於不同的介面,可以更好的管理他們。OO的精髓,是對物件的抽象,最能體現這一點的就是介面。
介面不是類,尤其是絕對不能使用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()
{
t(MSG);
return MSG;
}
}
/* usingItf 類呼叫了介面方法,來實施某一些功能,但是具體的操作有介面實現類來操作,
將必要的資料通訊給介面,實現了資料的通訊; 這裡如此說明並不嚴謹,只是便於初學者理解
*/
class usingItf //"驅動類"
{
public String getstring;
public void usingItf(Interface inf,String MSG) //使用了介面定義的方法 注意:使用了Interface 的引用 inf
{
getstring=Message(MSG);
}
}
public class Test //Test函式
{
public static void main(String args[])
{
ClassItf newClassItf=new ClassItf();
usingItf aa =new usingItf();
gItf(newClassItf,"This is the firstpage!!!!"); // 注意這裡傳遞的介面實現類的例項,還有引數 class usingItf
}
}