package oop.inctanseof_Beispiel;
import java.util.ArrayList;
import java.util.List;

//Interface
public interface Dtails {
	
    void getDetails();
    
    public static void main(String[] args) {
        List<Dtails> datenListe = new ArrayList<>();
      
        	
        
        // Objekte hinzufügen
        datenListe.add(new Manager("Herr Müller"));
        datenListe.add(new Katze("Whiskers"));
        datenListe.add(new Hund("Bello"));

        // Überprüfen, ob es ein Mitarbeiter, Katze oder Hund ist
        for (Dtails daten : datenListe) {
            if (daten instanceof Mitarbeiter) {
                System.out.println("Das ist ein Mitarbeiter.");
                daten.getDetails();  // Ruft die Methode von Manager auf
            } else if (daten instanceof Katze) {
                System.out.println("Das ist eine Katze.");
                daten.getDetails();  // Ruft die Methode von Katze auf
            } else if (daten instanceof Hund) {
                System.out.println("Das ist ein Hund.");
                daten.getDetails();  // Ruft die Methode von Hund auf
            } else if (daten instanceof Animal) {
                System.out.println("Das ist ein anderes Tier.");
                daten.getDetails();  // Ruft die Methode von Animal auf
            }
        }
    }

}


// Abstrakte Klasse Mitarbeiter
 abstract class Mitarbeiter implements Dtails {
    private String name;

    public Mitarbeiter(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

// Subklasse Manager
class Manager extends Mitarbeiter {
    public Manager(String name) {
        super(name);
    }

    @Override
    public void getDetails() {
        System.out.println("Manager Name: " + getName());
    }
}

// Abstrakte Klasse Animal
abstract class Animal implements Dtails {
    private String name;

    public Animal(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

// Subklasse Katze
class Katze extends Animal {
    public Katze(String name) {
        super(name);
    }

    @Override
    public void getDetails() {
        System.out.println("Katze Name: " + getName());
    }
}

// Subklasse Hund
class Hund extends Animal {
    public Hund(String name) {
        super(name);
    }

    @Override
    public void getDetails() {
        System.out.println("Hund Name: " + getName());
    }
}


