interface(接口)

多個無關的類能夠實現同一個接口.函數

一個類能夠實現多個無關的接口.ui

與繼承關係相似,接口與實現類之間存在多態性.3d

定義JAVA類的語法格式:對象

< modifier> class < name > [extends < superclass >]blog

[implements <interface>] [,<interface>* ]{繼承

< declarations>*接口

}io

 

接口是抽象方法和常量值定義的集合.class

從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現.變量

接口舉例:

public interface Runner{

   public static final int id = 1;   //用static靜態變量. 

   public void start();

   public void run();

   public void stop();

}

 

在接口中全部的方法都是abstract.

 

 

 

接口的特性:

接口能夠多重實現. 多重接口.一個類能夠實現多個接口.

接口中默認的屬性是public static final的.也只能是public static final的.在定義中能夠不寫puiblic static final.寫不寫都同樣.

接口中只能定義抽象方法,並且  這些方法默認是public的.也只能是public的.

接口能夠繼承其餘的接口,並添加新的屬性和抽象方法.

 

 

接口舉例:

 

 接口的繼承關係用implements(實現接口,等於實現接口中的抽象方法)

不要忘記接口中的方法都是抽象方法必需要進行重寫.

  接上圖

一個類能夠實現多個接口.Teacher實現了painter和singer兩個接口,重寫兩個接口的全部方法.

多個無關的類能夠實現同一個接口. Teacher實現了singer接口,Student也實現了singer接口. 

 

 s2指向teacher   p1等價於s2也指向teacher. 

可是根據多態/動態綁定.  p1把teacher當作painter來看.可以訪問teacher中的eat和paint.

 

f(singer s){

s.sing();

}

singer s是一個接口變量.只要實現了接口的任何對象均可以往裏面傳,例如上面S1 S2 均可以往裏面傳.

既然實現了接口,那麼必定對接口進行了重寫. 也就能夠用sing這個重寫過的方法.例如Student對sing進行了重寫

f(Singer s){s.sing}是實現多態/動態綁定的語句.根據傳入的接口變量動態綁定須要輸出的sing.

輸入s1會輸出 Student is sing.   輸入 s2 會輸出teacher is sing.

接口和接口之間能夠繼承. 要注意須要重寫的函數個數. 被繼承的接口的函數也須要重寫.

相關文章
相關標籤/搜索