Java Interface

Du hast mit Sicherheit bereits gelernt wie Java Vererbung funktioniert und wie man dieser verwendet.
Leider kann bei Java Vererbung ein Child Klasse nur von ein Parent Klasse vererben.
Dafür ist Java Interface da um das zu ermöglichen.

Syntax

public interface InterfaceName1{}
public interface InterfaceName2{}

class Child implements InterfaceName1, InterfaceName2 {

}

Bsp

public interface Prey {
    void flee();
}

public interface Predator {
    void hunt();
}

public class Rabbit implements Prey {
    @Override
    public void flee() {
        System.out.println("Der Hase flieht!");
    }
}

public class Wolf implements Predator {
    @Override
    public void hunt() {
        System.out.println("Der Wolf jagt!");
    }
}

// Fish can be both Predator and Prey
public class Fish implements Predator, Prey {
    private boolean isPredator;

    // Constructor to define if a fish is a predator or prey
    public Fish(boolean isPredator) {
        this.isPredator = isPredator;
    }

    @Override
    public void flee() {
        if (!isPredator) {
            System.out.println("Der Fisch flieht!");
        } else {
            System.out.println("Dieser Fisch jagt und flieht nicht!");
        }
    }

    @Override
    public void hunt() {
        if (isPredator) {
            System.out.println("Der Fisch jagt kleinere Fische!");
        } else {
            System.out.println("Dieser Fisch ist ein Beutetier und jagt nicht!");
        }
    }
}



public class Main {
    public static void main(String[] args) {
        Rabbit rabbit = new Rabbit();
        rabbit.flee();

        Wolf wolf = new Wolf();
        wolf.hunt();

        Fish predatorFish = new Fish(true);
        predatorFish.hunt();
        
        Fish preyFish = new Fish(false);
        preyFish.flee();
    }
}