Java Language Implementando multiples interfaces


Ejemplo

Una clase de Java puede implementar múltiples interfaces.

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");
    }
}

Observe cómo la clase Cat debe implementar los métodos abstract heredados en ambas interfaces. Además, observe cómo una clase puede implementar prácticamente tantas interfaces como sea necesario (hay un límite de 65,535 debido a la limitación de JVM ).

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

Nota:

  1. Todas las variables declaradas en una interfaz son public static final
  2. Todos los métodos declarados en una interfaz son public abstract (esta declaración es válida solo a través de Java 7. Desde Java 8, se le permite tener métodos en una interfaz, que no tienen por qué ser abstractos; estos métodos se conocen como métodos predeterminados )
  3. Las interfaces no pueden ser declaradas como final
  4. Si más de una interfaz declara un método que tiene una firma idéntica, efectivamente se trata como un solo método y no se puede distinguir de qué método de interfaz se implementa
  5. Se generará un archivo InterfaceName.class correspondiente para cada interfaz, luego de la compilación