實現多個介面

Java 類可以實現多個介面。

public interface NoiseMaker {
    String noise = "Making Noise"; // interface variables are public static final by default

    String makeNoise(); //interface methods are public abstract by default
}

public interface FoodEater {
    void eat(Food food);
}

public class Cat implements NoiseMaker, FoodEater { 
    @Override
    public String makeNoise() {
        return "meow";
    }

    @Override
    public void eat(Food food) {
        System.out.println("meows appreciatively");
    }
}

注意 Cat必須如何在兩個介面中實現繼承的 abstract 方法。此外,請注意一個類如何實際實現所需的介面數量( 由於 JVM 限制, 限制為 65,535 )。

NoiseMaker noiseMaker = new Cat(); // Valid
FoodEater foodEater = new Cat(); // Valid
Cat cat = new Cat(); // valid

Cat invalid1 = new NoiseMaker(); // Invalid
Cat invalid2 = new FoodEater(); // Invalid

注意:

  1. 在介面中宣告的所有變數都是 public static final
  2. 在介面方法中宣告的所有方法都是 public abstract(此語句僅在 Java 7 中有效。從 Java 8 開始,你可以在介面中使用方法,這些方法不必是抽象的;此類方法稱為預設方法
  3. 介面不能宣告為 final
  4. 如果多個介面宣告一個具有相同簽名的方法,那麼實際上它只被視為一個方法,並且你無法區分實現哪個介面方法
  5. 在編譯時,將為每個介面生成相應的 InterfaceName.class 檔案