[JAVA] Was bedeutet static und void?
Könnt ihr mir vielleicht einige Codebeispiele sagen, damit ich verstehen kann wozu die Beiden Wörter im Bezug zu Methoden wichtig sind?
lg
2 Antworten
Methoden können Werte zurück liefern oder eben nicht:
Mit Wert:
private int getAnzahlKinder() { return 3; }
Ohne Wert:
private void macheKinder() { // NSFW }
Wenn eine Methode nur etwas 'machen' soll, bei dem kein Rückgabewert erforderlich ist, verwendet man void. Möchte man einen Rückgabewert haben, so sollte man hier stattdessen den gewünschten Rückgabewert definieren. Hierbei wird aber ein "return Wert" in der Methode erwartet, welche die Methode 'beendet'.
Bei statisch und nicht statisch:
Statische Variablen und Methoden erfordern zum einen keine Instanz der Jeweiligen Klasse und sind somit auch nicht an eine Instanz gebunden.
Beispiele:
Konstanten, wie Monate in Calendar:
public final static int JANUARY = 0;
Der Variable January ist 'fix' der Wert 0 zugewiesen. Über:
System.out.println(Calendar.JANUARY);
Erhälst du somit immer den Wert 0. - Vor der Konstante ist der Klassenname anzugeben und keine Instanz dessen.
Ohne static ist eine Instanz eine Voraussetzung und die Variable ist nur innerhalb einer Instanz gültig:
class Auto { private String marke; public Auto(String marke) { this.marke = marke; }
Hier wäre die Variable Marke nicht statisch, wodurch eine Instanz vorausgesetzt wird.
Auto auto1 = new Auto("VW"); Auto auto2 = new Auto("BMW");
Für die Instanz auto1 ist die Variable "marke" nun "VW" und für "auto2" "BMW"
Beim Zugriff auf nicht statische Variablen ist auch die Instanz voran zu stellen und nicht die Klasse.
Ergänzung zu statischen Inhalten:
Dadurch, dass statischer Inhalt an die Klasse gebunden ist, ergibt sich auch ein Unterschied im Ladeverhalten. Statische Inhalte werden mit den Klassen zu Programmstart geladen. Instanzen dagegen werden erst zur Laufzeit erzeugt. Daher kann eine statische Methode nicht auf dynamische Inhalte zugreifen.
Bsp.:
class Fahrzeug { private int anzahlReifen;
public static void SetReifenanzahl(int anzahl){ this.anzahlReifen = anzahl; /* geht nicht, denn zum Programmstart gibt es noch keine Instanz von Fahrzeug und der Compiler kann das Schlüsselwort this nicht auflösen */ }
}
static: du kannst es ohne eine instanz abrufen
void: es wird nichts returnt
also "public static void main(String[] args){...}"
->Da wird nichts return, z.B. da es die Mainmethode ist, die muss ja nichts returnen, da sie ja quasi die "oberste Methode ist", die alles ausführt
"private static int Methode(){...
return null;}"
->du brauchst kein objekt um das aufzurufen du rufst es einfach mit "Methode();" auf.
LG und ich hoffe ich hab dir geholfen!
Das letzte Beispiel geht nicht, du kannst nicht null zurückgeben, wenn int gefordert ist, null fällt unter Object.
stimmt ja, es müsste "return 0;" sein, danke für die Verbesserung! :D
Nun, in C beispielsweise ist es möglich einen Wert zurückzugeben, der angibt, ob das Programm ordnungsgemäß beendet wurde oder nicht.