Java实施多个接口

示例

Java类可以实现多个接口。

public interface NoiseMaker {
    String noise = "Making Noise"; // 接口变量默认为public static final

    String makeNoise(); //接口方法默认为公共抽象
}

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(); // 有效
FoodEater foodEater = new Cat(); // 有效
Cat cat = new Cat(); // 有效

Cat invalid1 = new NoiseMaker(); // 无效
Cat invalid2 = new FoodEater(); // 无效

注意:

  1. 接口中声明的所有变量都是 public static final

  2. 接口方法中声明的所有方法都是public abstract(此语句仅在Java 7中有效。从Java 8开始,允许接口中具有不需要抽象的方法;此类方法称为默认方法)。

  3. 接口不能声明为 final

  4. 如果有多个接口声明一个具有相同签名的方法,则实际上将其仅视为一个方法,并且您无法区分实现了哪种接口方法

  5. 编译后将为每个接口生成一个对应的InterfaceName.class文件