实现多个接口

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 文件