Frage von Pokecrafter567, 50

Was macht "static" bei Methoden -Java?

Was bringt static bei Methoden in Java, bei Variablen bringt es ja, dass es für jede Instanz gleich ist... Aber was bringt es bei Methoden, bitte einfach erklären ohne Fachbegriffe wenn möglich (bin neu in Java)

Expertenantwort
von KnusperPudding, Community-Experte für Java, 32

Da ist es ähnlich. Die Methode benötigt keine Instanz einer Klasse um ausgeführt zu werden (Und kann sich entsprechend natürlich auch nicht auf Instanz-Variablen beziehen).

Antwort
von DreiGegengifts, 17


Aber was bringt es bei Methoden

Statische Methoden beziehen sich immer auf die Klasse. Sie sind also einmalig und was darin passiert ist immer unabhängig von möglichen  Objekten dieser Klasse.

Mit einer statischen Methode stellt man sicher, dass keine normalen Variablen  verwendet werden können (wenn man es tut, bekommt man eine Fehlermeldung). Nur ebenfalls statische Variablen können verwendet werden. Und die sind ja auch wieder einmalig und unabhängig.

Wo brauche ich das jetzt konkret beim Programmieren?

Ein einfaches Beispiel:

Die Klasse Automodell könnte z.B. dafür zuständig sein Daten zu einem Automodell zu verwalten.

Die Werte stehen in normalen Variablen und aufbereitet werden diese Werte in normalen Methoden. Jedes erzeugte Objekt bekommt nun die Werte eines anderen Modells.

Nun willst du aber noch eine Methode programmieren, in der alle Automodelle aufgelistet werden. In einer Listen-Variable sollen alle gespeichert und in einer Methode soll diese Liste aufbereitet werden. Beides machst du statisch. Denn um alle Automodelle anzuzeigen wäre es blödsinnig erst ein Objekt irgendeines konkreten Automodells zu erstellen, um darüber dann an die Listen zu kommen.


Noch ein Beispiel zu Methoden:

Die Klasse AutoManager hat nur statische Methoden. Z.B. die statische Methode speichereAuto, die ein Auto-Objekt als Parameter bekommt. Die AutoManager Klasse ist einer reine Logik Klasse, die eine Funktionalität anbietet, die es nur einmal gibt. Der AutoManager soll nur einmal existieren und soll immer das gleiche machen. Es sollen also davon keine Objekte erstellt werden. Das verhindere ich, in dem ich alles statisch mache.


Ein Beispiel zu Variablen:

Mit der Klasse Kreis kann ein beliebig großer Kreis erstellt werden. In der statischen Variable pi speicherst du die Kreiszahl. Denn die ist für alle Kreis-Objekte gleich.



Kommentar von triopasi ,

Schöne Antwort, Daumen hoch :)

Antwort
von Berny96, 16

Das heisst das du die Methode überall in deinem Programm aufrufen kannst, ohne ein Objekt der Klasse vorher zu erstellen.

Bei static Methoden kann man sie so aufrufen:

Console.WriteLine();

Nicht statische Methoden müsste man sie so aufrufen.

Console console = new Console(); // console, ist die Instanz
console.WriteLine(); // wir brauchen ein Objekt der Klasse Console um die nicht statische Methode aufzurufen
Antwort
von Kiboman, 28

die andere antwort ist doch richtig,

nehmen wir es mal so wie es ist.

du hast es noch nicht gebraucht, aber du weisst das es das gibt.

also wird eines tages soweit sein das du dich erinnerst und sagst, geht ja auch einfach dann muss ich das garnicht instanziieren.

wenn du anfängst komplexe sachen zu machen wo du mehr als eine klasse hast dann wirst du es auch irgendwann nutzen.

z.b. Bei einfachen hilfsklassen mit rechen oder string operationen wo keine instanz nötig ist.

Kommentar von varlog ,

Wenn man in seinem Programm zu viele Methoden oder Variablen static macht deutet das in 99% der Fälle auf einen grundlegenden Fehler im Designkonzept hin. Bei einfach Hilfsklassen wie du sie nennst mag das inOrdnung sein (z.B. die Math Klasse in der Standardbibliothek). Im Allgemeinen sollte man um static aber einen relativ großen Bogen machen.

Das wollte ich nur nochmal hervorheben, weil man aus deinem
Beitrag auch raus lesen könnte, dass statische Methoden nur was für Fortgeschrittene und dann aber das Mittel der Wahl wären.

Kommentar von Kiboman ,

Nein aber es wird meist nur bei größeren projekten von fortgeschrittenen z.b. in Form von Hilfsklassen eingesetzt.

Deshalb habe ich in Eingangtext erwähnt das er irgendwann von selbst darauf kommt sie zu verwenden (und sich momentan keine Gedanken dazu machen muss)

Antwort
von Schachpapa, 23

Man muss kein Object der Klasse instanzieren um die Methode aufrufen zu können.

Kommentar von Pokecrafter567 ,

Das war keine Antwort auf meine Frage

Kommentar von rmnstr ,

Doch war es. Du weißt ja schon, was es bei Variablen bewirkt. Genau dasselbe eben auch für Methoden, so wie es in der Antwort beschrieben wird.

Keine passende Antwort gefunden?

Fragen Sie die Community