Methoden ohne Methodenkopf ?!

sommerschnee

Mitglied
Hallo Forum Menschen,

meine Frage ist eigentlich recht simpel, da ich nur gerne wissen möchte wie man so etwas denn nennt...
Ich hatte meinen Lehrer diesbezüglich gefragt und er meinte erstmal das gibt es nicht und als ich es ihm demonstriert hatte konnte er mir dazu natürlich auch nicht mehr viel sagen! -.-
Es ist irgendwie schwierig zu erklären und da ich sowas noch nie vorher gesehen habe und ich anderen gerne die Kopfschmerzen ersparen möchte welche ich dabei hatte gehe ich ein bisschen detailierter auf die Geschichte ein ....ich denke der beste Weg wäre mal mit ein
bisschen Code anzufangen ;)

Ich bin vor kurzem auf Methoden gestoßen welche ohne Methodenkopf formuliert wurden, d.h. nur in geschweiften Klammern.

Beispiel:
Java:
{System.out.println("komischeMethode");}

Nach ein bisschen rum probieren habe ich bemerkt das Mehtoden, welche so deklariert sind, noch vor dem Konstruktor aufgerufen werden. (auf Sinn und Unsinn möchte ich hier bitte nicht eingehen!)

Beispiel:
Java:
public class Beispiel {

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

 public Beispiel() {
  System.out.println("Konstruktor");
 }
}
...liefert folgendes Ergebnis:
Code:
komischeMethode
Konstruktor

So weit so gut! Jetzt gibt es das ganze auch noch mit dem 'static' Modifikator:
Java:
static{System.out.println("nochSeltsamereMethode");}

Diese Geschichte steht in der Hierachie wohl ganz oben, bessonders deutlich wird das bei der Vererbung, wie folgendes Beispiel zeigt:
Java:
public class Parent {

 static{System.out.println("PARENT");}

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

 public Parent() {
  System.out.println("parentConstructor");
 }
}


public class Child extends Parent {

 static{System.out.println("CHILD");}

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

 public Parent() {
  System.out.println("childConstructor");
 }
}

Bei der Initialisierung der Child Klasse erhält man nun folgendes Ergebnis:
Code:
PARENT
CHILD
parent
parentConstructor
child
childConstructor

Ist eiegntlich nicht so wahnsinnig schwer zu verstehen und ich denke das Oracle das vermutlich auch ordentlich dokumentiert hat, es ist nur schwer nach etwas zu suchen wofür man den Namen nicht kennt...
Vielleicht ist ja einem von euch sowas schon mal unter gekommen.

Vielen Dank schon mal
Markus
 

stg

Top Contributor
Mit geschweiften Klammern schließt du einfach einen Code Block ein, also einen zusammenhängen Abschnitt mehrer einzelner Code Zeilen, das ist eigentlich auch schon alles. Ob das nun ein Methodenrumpf, ein static-Block oder sonst was ist, spielt da zunächst mal keine Rolle.

Genauso, wie du es beispielsweise nach einem if-statement kennst:
Java:
if(bedingung) {
  // alles, was hier steht
  // wird ausgeführt,  wenn
  // bedingung true ist
}

Das Beispiel von dir zeigt nun schön, was in welcher Reihenfolge abgearbeitet wird. Das solltest dur dir merken! :)
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
das sind initializer
Der Inhalt von:
Java:
static {

}
wird ausgeführt, wenn die klasse zum ersten mal "benötigt" wird. Häufig nutzt man diesen um statische Dinge zu initialisieren und um mit System.loadlibrary Libs zu laden.

ohne das static schlüsselwort, ist es quasi so etwas wie ein Konstruktor, welcher im Allgemeinen nur in anonymen Klassen benutzt wird. Da diese eben anonym sind, haben sie keinen Namen und daher kann man auch keinen "normalen" Konstruktor schreiben.
 
Zuletzt bearbeitet:

sommerschnee

Mitglied
Vielen Dank für die schnellen Antworten :)
jetzt kann ich die Geschichte wenigstens mal beim Namen nennen! Ich denke das sich alle weitern Fragen mit der
Oracle Dokumentation beantworten lassen...

Vielen Dank nochmal
Markus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
A Methoden ohne Referenzen finden Allgemeine Java-Themen 9
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
N abstracte klassen methoden Allgemeine Java-Themen 32
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
L mehrere Methoden Allgemeine Java-Themen 19
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
A Automatisches Methoden Laufzeiten logging? Allgemeine Java-Themen 7
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Q-bert Methoden Methoden in Java Allgemeine Java-Themen 13
D Methoden Java-Aufgabe Allgemeine Java-Themen 2
M Compiler-Fehler Methoden-Referenz Allgemeine Java-Themen 5
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
S 2 methoden mit gleichen namen und ein Interface Allgemeine Java-Themen 9
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
E OOP Objekte und Methoden Allgemeine Java-Themen 1
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
T Java Array in Methoden Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
A Methoden verändern Allgemeine Java-Themen 12
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
Paul15 String Methoden Allgemeine Java-Themen 7
G Methoden BMI -Wert Aufgabe(Methoden) Allgemeine Java-Themen 4
F Testen von Methoden Allgemeine Java-Themen 3
S "Vererben" statischer Felder/Methoden Allgemeine Java-Themen 4
F Methoden in der Enumeration Klasse Allgemeine Java-Themen 1
T Überschreiben von Methoden Allgemeine Java-Themen 6
M Methoden werden in falscher Reihenfolge bearbeitet Allgemeine Java-Themen 10
S Methoden Methoden überschreiben Allgemeine Java-Themen 3
N Threads statische Methoden in Threads Allgemeine Java-Themen 5
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
S Methoden Frage Allgemeine Java-Themen 2
R Wie kann man diese Methoden in arrays etablieren? Allgemeine Java-Themen 8
M Methoden in Rescources speichern Allgemeine Java-Themen 4
G Synchronisation nicht statischer Methoden Allgemeine Java-Themen 4
A Vererbung finale Methoden überschreiben Allgemeine Java-Themen 24
A Methoden parallelisieren? Allgemeine Java-Themen 2
L Methoden methoden an generischen klassentyp anpassen Allgemeine Java-Themen 5
C Methoden Übernahme von standart nativen Methoden? Allgemeine Java-Themen 9
B Zusammenfassen verschiedener ähnlicher Methoden Allgemeine Java-Themen 8
K JNI: Methoden aus unterschiedlichen Threads aufrufen Allgemeine Java-Themen 3
P Unterschiedliche Clone- Methoden Allgemeine Java-Themen 5
MQue Spezialfrage Überschreiben von Methoden Allgemeine Java-Themen 14
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
MiMa Rekursive Methoden Allgemeine Java-Themen 3
S Programm das alle aufgerufenen Methoden ausgibt..? Allgemeine Java-Themen 6
F ListIterator (next & previous methoden) Allgemeine Java-Themen 5
W Frage zu Refactoring statischer Methoden Allgemeine Java-Themen 4
M Methoden/Klassen für andere Projekte Allgemeine Java-Themen 4
T Methoden per String-Namen aufrufen Allgemeine Java-Themen 2
C Kapselung Warum graift man auf Variablen nur über Methoden und nich direkt zu? Allgemeine Java-Themen 10
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
K Auf Methoden der Runnable Klasse zugreifen Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
D Passende Name für Methoden finden Allgemeine Java-Themen 3
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
A Methoden laufen im Konstruktor, außerhalb allerdings nicht Allgemeine Java-Themen 2
M Generische Methoden mit Java und globale Variablen Allgemeine Java-Themen 9
GianaSisters ArrayList in Methoden übergeben Allgemeine Java-Themen 3
S static methoden Allgemeine Java-Themen 9
J coole Methoden Allgemeine Java-Themen 6
R Methoden in einem Thread unterschiedlich oft ausführen Allgemeine Java-Themen 4
A OOP: Überschreiben/Implementierung von Methoden Allgemeine Java-Themen 5
P Methoden und Werte Allgemeine Java-Themen 17
E Performace/Ausführungszeit von Methoden ermitteln Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben