[JAVA] Was bedeutet static und void?

... komplette Frage anzeigen

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.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von regex9
20.08.2016, 14:41

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 */ }
}
1

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! 

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von androhecker
20.08.2016, 09:54

Das letzte Beispiel geht nicht, du kannst nicht null zurückgeben, wenn int gefordert ist, null fällt unter Object.

5
Kommentar von regex9
20.08.2016, 14:48

>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

Nun, in C beispielsweise ist es möglich einen Wert zurückzugeben, der angibt, ob das Programm ordnungsgemäß beendet wurde oder nicht.

0