在定義一組可操作的方法
限制
1. 實作某介面的類別,則必須實作該介面所定義的所有方法
2. 介面內部的 field 全部都是常數、全部的 method 都是抽象方法
語法
介面使用修飾詞 interface 去宣告介面類別。介面的成員(field 與方法 method)通常前面不會加上修飾子,但是這種情況下和在介面的 field 前面加上 public static final 、介面的 method 前面加上 abstract (抽象方法)具有相同的效果。
修飾子 interface 介面名稱 {
資料型態 field 名稱 = 運算式; // field 一定要初始化,常數宣告;
傳回值的資料型態 method 名稱 ( ); //方法簽名
}
介面使用修飾詞 implement 去實作介面類別。
class 類別名稱 implements 介面名稱 {
...
}
介面多重繼承
Java 並不支援多重繼承,但透過實作一個子類別能同時繼承自2個以上的父類別的方式,仍然可以達成多重繼承 method 名稱的目的。
class 類別名稱 implements 介面名稱1, 介面名稱2, ... {
...
}
要注意:繼承某抽象類別的類別必定是該抽象類別的一個子類別,但實作某介面的類別並不歸屬於那一類,一個物件上可以實作多個界面。
介面的延伸
介面與一般類別一樣,可以透過延伸 extends 的方式產生新的介面。原來的介面稱為父介面 superinterface,而衍生出來地稱為子介面 subinterface。
interface 子介面名稱 extends 父介面名稱1, 父介面名稱2, ... {
...
}
要注意:雖然父介面衍生出子介面時使用的是 extends,但要實作介面類別時,仍然要用 implements 這保留字。
範例
類別檔案:Vehicle.java
public interface Vehicle {
void vShow();
}
類別檔案:Material.java
public interface Material {
void mShow();
}
類別檔案:Car.java
public class Car implements Vehicle, Material {
private int model;
public Car(int model) { this.model = model; }
public void vShow(){
System.out.println("Car model is " + model);
}
public void mShow(){
System.out.println("Car material is steel");
}
}
類別檔案:InterfaceTest.java
public class InterfaceTest {
public static void main(String[] args) {
Car car1 = new Car(1);
car1.vShow();
car1.mShow();
}
}
執行結果

沒有留言:
張貼留言