Klassen statische Objekterzeugung vor Konstruktoraufruf???

SafeDebagger

Mitglied
Java:
class Hund extends Tiger {
    Katze m = new Katze("Tom");
    static Maus r = new Maus();

    Hund() {
        System.out.println("Hund");
    }

    public static void main(String[] args) {
        new Hund();
    }
}

Nehmt einfach an, dass es diese anderen Klassen auch gibt :)
Mir ist es neu, dass man ein Objekt als "Klassenobjekt" (siehe static Maus r = new Maus(); ) deklarieren kann.
Was bedeutet dieses static in Verbindung mit einer Objekterzeugung, da dies wohl normal sein soll?

2. Frage: Warum wird zuerst der Maus()-Konstruktor ausgeführt (dieser gibt auf der Konsole "Maus" aus) und erst danach "Hund"? Wahrscheinlich hängt die Antwort dieser Frage mit der ersten Frage zusammen ;D

Falls die weiteren KLassen gebraucht sind, kann ich sie euch zur Verfügung stellen, jedoch sollte meine Frage auch so klärbar sein:)
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
Deine erste Frage "Was bedeutet, dass da dies so stimmen soll?" verstehe ich nicht, da sie grammatikalisch nicht korrekt ist.
Zur zweiten Frage: Der Compiler generiert für statische Klassenvariablen, die bei der Deklaration initialisiert werden, eine separate Methode, die auch "Static Initializer" Blöcke beinhaltet, die als allerallerallererstes ausgeführt wird, direkt nachdem die Klasse geladen wurde und noch bevor irgendwelche anderen Methoden in dieser Klasse (inklusive der main() Methode) ausgeführt werden. Das sieht dann in etwa so aus:
Java:
class Hund extends Tiger {
    static Maus r;
    // durch Compiler generierte Methode mit komischem Namen:
    static void <clinit>() { // <--- wird zu allerallerallererst ausgeführt!
         r = new Maus();
    }
    Katze m = new Katze("Tom");

    Hund() {
        System.out.println("Hund");
    }

    public static void main(String[] args) {
        new Hund();
    }
}
 
X

Xyz1

Gast
Erschwerend hinzu kommt noch, dass die nicht den Konventionen entsprechende angegebene Reihenfolge von r und m vom Compiler berichtigt wird - sie aber dennoch zu vermeiden ist (nicht zuletzt der Lesefluss).
 

SafeDebagger

Mitglied
Deine erste Frage "Was bedeutet, dass da dies so stimmen soll?" verstehe ich nicht, da sie grammatikalisch nicht korrekt ist.
Zur zweiten Frage: Der Compiler generiert für statische Klassenvariablen, die bei der Deklaration initialisiert werden, eine separate Methode, die auch "Static Initializer" Blöcke beinhaltet, die als allerallerallererstes ausgeführt wird, direkt nachdem die Klasse geladen wurde und noch bevor irgendwelche anderen Methoden in dieser Klasse (inklusive der main() Methode) ausgeführt werden. Das sieht dann in etwa so aus:
Java:
class Hund extends Tiger {
    static Maus r;
    // durch Compiler generierte Methode mit komischem Namen:
    static void <clinit>() { // <--- wird zu allerallerallererst ausgeführt!
         r = new Maus();
    }
    Katze m = new Katze("Tom");

    Hund() {
        System.out.println("Hund");
    }

    public static void main(String[] args) {
        new Hund();
    }
}

1. Frage ist korrigiert und hast du auch im Grunde beantwortet.
2.Frage: Das erklärt also, warum ich im Debugger bei Eclipse trotz Setzen von Breakpoints, in der Konsole sofort die MAus-Ausgabe hatte :D DANKEEE
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
E statische Variable ändert sich Java Basics - Anfänger-Themen 7
A Statische Variable in Methoden Java Basics - Anfänger-Themen 7
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
A statische Arraylist Java Basics - Anfänger-Themen 6
Q Variablen Statische Variablen Java Basics - Anfänger-Themen 8
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
K Statische Bindung Java Basics - Anfänger-Themen 6
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S statische Methode nebenläufig Java Basics - Anfänger-Themen 2
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
M Statische Methoden Java Basics - Anfänger-Themen 22
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
A Statische Methode "vererben" - Zwang durch annotation processor Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
S Statische Klassen/ Singleton Java Basics - Anfänger-Themen 13
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
B statische Variable Java Basics - Anfänger-Themen 10
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
A Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern? Java Basics - Anfänger-Themen 5
A Stilfrage: statische Variable mit Instanz der gleichen Klasse Java Basics - Anfänger-Themen 8
H Statische generische Methode Java Basics - Anfänger-Themen 2
A statische Attribute: Vererbung und Zugriff darauf Java Basics - Anfänger-Themen 15
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
hdi statische synchronisation Java Basics - Anfänger-Themen 6
G statische ArrayList? Java Basics - Anfänger-Themen 8
K Statische Variablen von Objekten im Array Java Basics - Anfänger-Themen 15
K nicht-statische Methode aufrufen Java Basics - Anfänger-Themen 3
S statische variable initialisieren mit exception Java Basics - Anfänger-Themen 2
G statische Variable zugreifen bzw. setzen Java Basics - Anfänger-Themen 6
T in statischem Kontext auf nicht statische Variable beziehen Java Basics - Anfänger-Themen 5
M Statische Funktion Java Basics - Anfänger-Themen 2
M öffentliche nicht-statische Funktion fremder Klasse ausführn Java Basics - Anfänger-Themen 16
C args[] als statische Variablen speicher oder wie? Java Basics - Anfänger-Themen 12
P nicht statische methode instantiieren Java Basics - Anfänger-Themen 7
H statische methoden und sichtbarkeit Java Basics - Anfänger-Themen 13
nadoria statische Methoden (Klassenmethoden) Java Basics - Anfänger-Themen 3
K statische variablen und methode Java Basics - Anfänger-Themen 3
H Was ist nocheinmal eine statische Klasse? Java Basics - Anfänger-Themen 6
G Statische Methoden? Java Basics - Anfänger-Themen 2
kb statische methoden und throws exception Java Basics - Anfänger-Themen 2
H statische, dynamischer Typ von Variablen Java Basics - Anfänger-Themen 1
M Konstruktor eine statische Methode? Java Basics - Anfänger-Themen 9
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
N Unterschied statische Attribute u. Methoden <-> objekt Java Basics - Anfänger-Themen 4
O nicht-statische Inhalte auf statische Inhalte verweisen Java Basics - Anfänger-Themen 19
M wann statische klassen? Java Basics - Anfänger-Themen 14
U statische Variablen Java Basics - Anfänger-Themen 12
F Statische Methode - Nicht Statische Methode Java Basics - Anfänger-Themen 10
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
D Statische und Nicht-Statische Methoden Java Basics - Anfänger-Themen 7
K Statische Methoden!? Java Basics - Anfänger-Themen 8
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
N This bei objekterzeugung Java Basics - Anfänger-Themen 6
J Wert bei Objekterzeugung verändern Java Basics - Anfänger-Themen 12
S "Sichtbarkeitsmodifizierer" und Objekterzeugung Java Basics - Anfänger-Themen 1
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
H MyID3 Problem bei Objekterzeugung Java Basics - Anfänger-Themen 4
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
Z Vererbung Objekterzeugung Java Basics - Anfänger-Themen 4
LionAge Kapselung, Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 4
L Objekterzeugung Java Basics - Anfänger-Themen 3
J Klassen Fehler mit Parameter des Konstruktors bei einer Objekterzeugung Java Basics - Anfänger-Themen 5
D Verschachtelte Objekterzeugung Java Basics - Anfänger-Themen 6
E Objekterzeugung in JAVA Java Basics - Anfänger-Themen 7
F OOP Objekterzeugung in IF-Struktur Java Basics - Anfänger-Themen 2
J Objekterzeugung im Konstruktor - Mehrfach gleiche Referenzvariable? Java Basics - Anfänger-Themen 4
L Objekterzeugung Unterschied..? Java Basics - Anfänger-Themen 6
C Vererbung "extends" umgehen mittels Objekterzeugung?! Java Basics - Anfänger-Themen 29
N Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 5
G objekterzeugung Java Basics - Anfänger-Themen 7
S Methode für Objekterzeugung Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben