Klassen Reihenfolge beim Aufruf von Klassen

_Johannes_

Mitglied
Hallo,
ich habe hier einen Code und soll sagen was in der Konsole ausgegeben wird. Allerdings komme ich überhaupt nicht mit, in welcher Reihenfolge die Klassen bzw. Methoden aufgerufen werden. Könnte mir bitte jemand erklären was das Prinzip dabei ist?
Danke!

Die Ausgabe ist:
Kampf von Haus (KV)
Kampf von Kino (KV)
Kampf von Haus (IV)
Haus von Inception
Kampf von Kino (IV)
Kino von Inception
-> Beginn der main-Methode
-> new Traum(main):
Kampf
Traum von main
-> new Inception():
Kampf von Haus (IV)
Haus von Inception
Kampf von Kino (IV)
Kino von Inception
-> Ende der main-Methode

Java:
public class Inception extends Kino {
    static Kino kino = new Kino("Inception");

    public Inception() {
        super("Inception");
    }

    public static void main(String[] args) {
        System.out.println(" -> Beginn der main-Methode");
        System.out.println(" -> new Traum(main):");
        new Traum("main");
        System.out.println(" -> new Inception():");
        new Inception();
        System.out.println(" -> Ende der main-Methode");
    }
}

class Haus {
    static Kampf klassenKampf = new Kampf("Haus (KV)");
    Kampf instanzKampf = new Kampf("Haus (IV)");

    public Haus(String von) {
        System.out.println("Haus von " + von);
    }
}

class Kino extends Haus {
    static Kampf klassenKampf = new Kampf("Kino (KV)");
    Kampf instanzKampf = new Kampf("Kino (IV)");

    public Kino(String von) {
        super(von);
        System.out.println("Kino von " + von);
    }
}

class Traum extends Kampf {
    public Traum(String von) {
        System.out.println("Traum von " + von);
    }
}

class Kampf {
    public Kampf() {
        System.out.println("Kampf");
    }

    public Kampf(String von) {
        System.out.println("Kampf von " + von);
    }
}
 
Bevor irgendwas mit der Klasse passiert werden die static-Member initialisiert. Und zwar angefangen bei der obersten Klasse, dann von den jeweiligen Unterklassen. Also zuerst der static kampf in Haus, dann in Kino, dann wir din Inception eine Instanz von Kino erzeugt, der die instanzvariable in Kino aufruft. Danach wird der Konstruktor von kino , der zuerst in die Oberklasse weiterleitet ausgeführt, kommt runter und gibt dann seinen Text aus.
Dann gehts in die Main-Methode, da die ja von der JVM gestartet wurde. Der rest sollte klar sein.

Also zuerst static member der oberklasse, dann der Unterklasse.
Dann Instanzvariablen, die direkt initialisiert werden und dann die KOnstruktoren
 

Zurück
Oben