statischer Konstruktor

Status
Nicht offen für weitere Antworten.

Dwaine

Mitglied
Was ist ein statischer Konstruktor?Wann wird er aufgerufen und vorallem wie wird er erstellt? Und was ist generell der Unterschied zwischen statisch und dynamisch. :?: :?: :?:

Danke schon ma im voraus.
 

Stefan1200

Top Contributor
Kontruktoren werden immer aufgerufen, wenn eine Klasse aufgerufen wird.
Kontruktoren haben den selben Namen wie die Klasse.

Zu den anderen Fragen möchte ich doch glatt abgegeben an meine Forum Kollegen ;-)
 

Zaron

Mitglied
static darf soweit ich weiß garnicht vor den Konstruktor einer Klasse gesetzt werden (wäre ja auch blöd, da der Konstruktor ja eine Instanz der Klasse erzeugt und Instanzen sind nicht statisch *g* )

static bedeutet, dass die Methode (oder Variable) zur Klasse gehört was sich wie folgt äußert: Klassenname.statischeMethode(); anstelle von objektname.methode();
 

jptc.org

Bekanntes Mitglied
So ich versuche mal zusammenzufassen :).

Also statische Konstruktoren gibt es nicht! Alles was statisch (static) an einer Klasse ist, ist nicht an eine konkrete Objektinstanz der Klasse gebunden. Am besten sieht man das bei statischen Variablen. Wenn man zwei Instanzen einer Klasse hat und in einer Klasse eine statische Variable ändert, so ist die Änderung auch sofort in der zweiten Instanz der Klasse zu sehen. D.h. static Variable werden pro Klasse und nicht pro Instanz gespeichert.

Um eine Instanz einer Klasse anzulegen werden Konstruktoren verwendet. Erbt eine Klasse von einer anderen, so werden beim Instanziieren immer auch die entsprechenden Konstruktoren der Superklasse aufgerufen. Es wird also einfach die Hierarchie nach oben gewandert, dabei werden immer die Konstruktoren mit den gleichen Parametern verwendet, es sei denn man ruft selbst super() mit einer anderen Parameterzahl auf.

Statische Codeblöcke und Variablen werden nach dem Aufruf der Konstruktorhierarchie, aber vor dem ersten Aktion nach super() initialisiert.

Ich hoffe das hat etwas zur Verwirrung beigetragen.

Karsten Voigt
http://www.java-performance-portal.org
 

me.toString

Bekanntes Mitglied
Ich denke mal das nicht eine statische Methode gmeint ist sondern ein staic-Block !
Code:
public class Test {

  static{
    //irgendwelche Anweisungen
  }

  // ...
}

Sieht doof aus ... geht aber. Dieser Block wird dann ein einziges mal aufgerufen ... weiss allerdings nicht wann ... ob ganz am Anfang beim Programmstart oder bei der ersten Benutzung der Klasse. Man kann diesen Block auch nicht händisch noch mal aufrufen !

Michael
 

jptc.org

Bekanntes Mitglied
das hab ich auch mit in meinem letzten post gesagt:

jptc.org hat gesagt.:
Statische Codeblöcke und Variablen werden nach dem Aufruf der Konstruktorhierarchie, aber vor dem ersten Aktion nach super() initialisiert.

man sollte aber immer dran denken: statische codeblöcke sind kein guter programmierstil und für aussenstehende häufig schwer zu verstehen!

Karsten Voigt
http://www.java-performance-portal.org
 

me.toString

Bekanntes Mitglied
@karsten:
Sorry ... wir haben unsere Beiträge zur selben Zeit geschrieben [ du warst nur etwas schneller beim einchecken ... :? ]

Michael
 

Dwaine

Mitglied
Jo dann vielen dank erstmals.
Kann noch nich sagen ob mir das weiterhilft, werde ich morgen sehn. :)
bis denne
 

Ebenius

Top Contributor
Also:
Code:
static {
      // something
}
nennt sich static initializer. Der Grund dafür ist, dass statisch (also für die Klasse und nicht Instanzen der Klasse) Initialisierungen vorgenommen werden.

Static initializers sind statische Klasseninhalte und werden im Zuge der Initialisierung der Klasse aufgerufen; in der Reihenfolge wie sie im Code deklariert sind (v.o.n.u.). Das bedeutet nach dem Laden der Klasse werden alle statics der Reihe nach aufgeführt:
Code:
static {
    System.out.println("First Initialization");
}

static {
    System.out.println("Second Initialization");
}
führt definitiv zu einer Ausgabe auf dem Standard Out von:
Code:
First Initialization
Second Initialization

Hat man jetzt eine Klassen-Hierarchie mit static initializers in erbender und beerbter Klasse
Code:
class A {
    static {
        System.out.println("Class A initializing...");
    }
}

class B extends A {
    static {
        System.out.println("Class B initializing...");
    }
}
führt dies definitiv zu einer Ausgabe auf dem Standard Out von:
Code:
Class A initializing...
Class B initializing...

Eine Klasse wird initialisiert, bevor Sie das erste mal benutzt wird. Das heißt, dass vor dem ersten Erstellen einer Instanz (Konstruktor-Aufruf), vor dem ersten Aufruf einer statischen Methode und vor dem ersten Abgreifen einer statischen Variable (oder Konstante) die Klasse initialisiert ist.

Das sind alle Regeln, die ich kenne.

:!: A.class ist keine Nutzung der Klasse im eigentlichen Sinn. Abhängig vom Compiler ist die Klasse dadurch initialisiert oder auch nicht. Streng nach der Maschinenspezifikation wird Klasse A dadurch nicht initialisiert, obwohl ältere Compiler dies anders sehen...

Es grüßt Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
H Polymorphie Interfaces und statischer Typ Java Basics - Anfänger-Themen 33
C Statischer Typ aber Variable nicht statisch? Java Basics - Anfänger-Themen 5
O Statischer und Dynamischer Typ Java Basics - Anfänger-Themen 6
L Polymorphie Dynamischer oder Statischer Typ für Methodenparameter Java Basics - Anfänger-Themen 8
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
I Statischer Initializer Java Basics - Anfänger-Themen 4
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
kilopack15 this.v mit statischer Variable v? Java Basics - Anfänger-Themen 1
M Input/Output tcp-Server mit statischer Parallelität Java Basics - Anfänger-Themen 7
W If_Bedingung in statischer Methode beim zweiten Mal nicht durchlaufen Java Basics - Anfänger-Themen 14
N Initialisierer / statischer Initialisierer verstehen Java Basics - Anfänger-Themen 6
W Dynamischer und statischer Typ von Referenzvariablen Java Basics - Anfänger-Themen 13
C Methoden Rückgabewert von statischer Methode ignorieren Java Basics - Anfänger-Themen 8
N ArrayList verwenden in statischer Methode Java Basics - Anfänger-Themen 2
R Frage zu statischer Methode toString() Java Basics - Anfänger-Themen 3
Luk10 Problem mit Singleton bzw statischer Referenz! Java Basics - Anfänger-Themen 16
C Seitenwechsel in statischer Methode? Java Basics - Anfänger-Themen 6
P Statischer Import - ich raffs nicht! Java Basics - Anfänger-Themen 3
H Unterschied statischer/dynamische Typ einer Variablen Java Basics - Anfänger-Themen 2
H statischer Zugriff / accessed in a static way Java Basics - Anfänger-Themen 3
Paule Aufruf nicht statischer Methode in statischer MEthode Java Basics - Anfänger-Themen 7
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
C Unbekannter "Konstruktor"?? Java Basics - Anfänger-Themen 10
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
K Konstruktor für ein Objekt mit Zugriffsmethoden Java Basics - Anfänger-Themen 7
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
E Konstruktor mit Methode Java Basics - Anfänger-Themen 7
E ArithmeticException im Konstruktor Java Basics - Anfänger-Themen 4
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
W Typecastin im Konstruktor? Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
F Arrays im Konstruktor Java Basics - Anfänger-Themen 5
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
E Best Practice Konstruktor mit bestehender Intanz der gleichen Klasse aufrufen Java Basics - Anfänger-Themen 4
E Plausibilitätsprüfung in dem Konstruktor mit Ausnahmebehandlung Java Basics - Anfänger-Themen 8
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
D Compiler-Fehler Konstruktor von Superklasse übernehmen Java Basics - Anfänger-Themen 1
P Counter im Konstruktor Java Basics - Anfänger-Themen 11
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
I Einträge in den Konstruktor Java Basics - Anfänger-Themen 3
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Datentypen Warum mit Konstruktor Objektvariablen initalisieren? Java Basics - Anfänger-Themen 19
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
P Konstruktor. Java Basics - Anfänger-Themen 4
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
D Objekt oder Konstruktor Java Basics - Anfänger-Themen 2
F Java default Konstruktor Java Basics - Anfänger-Themen 1
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
T Konstruktor mit Referenzdatentypen Java Basics - Anfänger-Themen 5
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
R ArrayList im Konstruktor. Java Basics - Anfänger-Themen 4
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
S Variable, die im Konstruktor gesetzt wird, wird nicht gefunden vom Compiler. Java Basics - Anfänger-Themen 4
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B Methoden Konstruktor im Konstruktor aufrufen Java Basics - Anfänger-Themen 2
N Aufgabe: Pizza Konstruktor mit mehreren beliebigen Durchmesser/Preiskombinationen Java Basics - Anfänger-Themen 8
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
G Verwendung von Konstruktor Java Basics - Anfänger-Themen 8
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben