Wann statische Methoden, statische Attributen?

Status
Nicht offen für weitere Antworten.

Tobias

Top Contributor
Wenn möglich: nie.

Es gibt natürlich ein paar Fälle, wo sie unumgänglich sind, zum Beispiel beim Singleton-Pattern oder als Factory-Methode. Darüberhinaus können sie ganz nützlich sein, wenn man nicht immer erst ein Objekt instanziieren möchte, um eine Methode oder ein Attribut zu benutzen - siehe Konstanten oder Utility-Klassen wie Math.

mpG
Tobias
 

Marco13

Top Contributor
Statische Methoden: So oft wie möglich. Man könnte ganz pauschal sagen: Wenn ein Methode NICHT auf die Attribute einer Klasse zugreift, dann kann man sie statisch machen. ("Das kann nicht schaden"). Häufig ist das für kleine, praktische (häufig private) Utility-Funktionen sinnvoll.

Statische Attribute: So selten wie möglich. Es ist "fast nie" sinnvoll, ausser bei "public static final"-Konstanten.

Statische Klassen (Singletons) : So selten wie möglich. Häufig werden Singletons benutzt, obwohl kein wirklicher Grund dafür besteht. Der Grund, wesewegen sie oft verwendet werden ist, dass sie "so herrlich bequem" sind: Man kann von überall auf die Instanen zugreifen, und braucht sich keine Gedanken über eine vernünftige Programm- bzw. Klassenstruktur zu machen. Irgendwann rächt sich das dann aber in Unübersichtlichkeit und fehlender Wart- und Erweiterbarkeit des Programms.
 

javaX

Mitglied
statische methoden schreibe ich nur wenn ich keine objekte dieser klasse erstellen will.
alle verwendeten attribute dieser methode müssen auch statisch sein!

statische attribute sind an klassen und nicht an objekte gebunden.
wenn man zB einen array von objekten einer klasse hat braucht man bei statischen attributen nur bei einem object den wert ändern. er ändert sich bei allen objekten.
static wird oft im zusammenhang mit final verwendet;
 
G

Guest

Gast
könnt ihr mir hier einen Anwendungsfall aufzeigen, wo man statische Methoden / Attribute verwendet?

wenn ich das richtig verstanden habe, werden statische Attribute/Methoden verwendet, wenn man explizit keine Objekte dieser Klasse erstellen möchte.
 

WieselAc

Top Contributor
Naja nicht so pauschal gehts wie fast immer nicht. Statische Methoden sind rein Funtionale ausgelegt.

Das heißt, um es mal konkret zu machen, du hast z.B. eine Klasse Punkt mit zwei Membern (x,y), dann kannst du dir entweder darin oder in einer separaten util Klasse verschiede funktionale Methoden für dieses Objekt definieren wie zu Beispiel:

Code:
public static Punkt sum(Punkt sum1, Punkt sum2){
    return new Punkt(sum1.getX() + sum2.getX(), sum1.getY()  + sum2.getY())

}


Ergänzung zu Member:

Statische Member werden meistens (fast ausschließlich) als Konstanten verwendet also

Code:
public static final ....

in dem Beispiel Punkt könnte man zum Beispiel den Mittelpunkt des KO so definieren:

Code:
public static final Punkt center = new Punkt(0,0);

....


public static double distance(Punkt p){
    int tmpX = center.getX() - p.getX();
    int tmpY = center.getY() - p.getY();
    return Math.sqrt(tmpX * tmpX + tmpY * tmpY);
}
 

Leroy42

Top Contributor
WieselAc hat gesagt.:
du hast z.B. eine Klasse Punkt mit zwei Membern (x,y), dann kannst du dir entweder darin oder in einer separaten util Klasse verschiede funktionale Methoden für dieses Objekt definieren

Und genau in diesem Fall sollte man eben keine statischen Methoden sondern
Member-Methoden definieren.

Code:
public Punkt sum(Punkt sum2){ 
    return new Punkt(x + sum2.getX(), y  + sum2.getY()) ;
}
oder gleich
Code:
public Punkt sum(Punkt sum2){ 
    return new Punkt(x + sum2.x, y  + sum2.y) ;
}
 

Lim_Dul

Top Contributor
Tendiell verwende ich statische Methoden/Klassen, wenn mein Programm nur einen Wert "transformieren" soll.

Also quasi Methoden, die aus einer Eingabe eine Ausgabe berechnen, die aber nicht der Eingabe oder Ausgabeklasse zuordnebar sind.

Ansonsten bei Klassen, die eine Art Singelton sind, weil ich die Einzigartigkeit brauche und es damals einfach war, die Klasse einfach statisch zu machen, als ein echtes Singelton zu implementieren.

Grundsätzlich bin ich aber mittlerweile der Ansicht, eher weniger als mehr static einzusetzen und finde auch nicht mehr alle Entscheiden, die ich mal getroffen habe, sinnvoll. In den seltensten Fällen braucht man es wirklich.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
M Wann Membermethoden, wann statische Utility-Methoden? Allgemeine Java-Themen 24
M Exceptions - wann / wie verwenden? Allgemeine Java-Themen 4
LimDul Spezifkation, wann es deprecation Warnings gibt Allgemeine Java-Themen 1
N Streams wann .filtern? Allgemeine Java-Themen 2
perlenfischer1984 Wann ist ein Parameter Check sinnvoll Allgemeine Java-Themen 7
T GUICE- Dependency Injection- WANN nutze ich Providers? Allgemeine Java-Themen 2
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
Rudolf Wann System.exit und wann dispose? Allgemeine Java-Themen 9
L Checkstyle: Wann ist eine Methode für Vererbung entworfen? Allgemeine Java-Themen 13
X Wann ist Runtime.getRuntime().exec mit Copy fertig? Allgemeine Java-Themen 10
M Wann ist MVC sinnvoll? Allgemeine Java-Themen 14
Ark Wann 64 Bit-Befehle im Einsatz? Allgemeine Java-Themen 6
G Wann normale Exception und wann Runtimeexception Allgemeine Java-Themen 12
Y Wann folgende Technologien benutzen Allgemeine Java-Themen 5
G Parameter oder Attribut (wann nehme ich was?) Allgemeine Java-Themen 12
M Wann verwendet man PropertyChangedEvents, wann eigene? Allgemeine Java-Themen 3
F Wann und wie Exceptions einsetzen? Allgemeine Java-Themen 13
G Ab wann Datenbank verwenden Allgemeine Java-Themen 15
B Wann Interface und wann Adapter Allgemeine Java-Themen 4
B ObjectInputStream - Wann ist Ende erreicht? Allgemeine Java-Themen 10
D Wann ist das ergebnis einer Rechnung eine Double? Allgemeine Java-Themen 7
M Maximal verfügbarer Hauptspeicher? Ab wann wird ausgelagert? Allgemeine Java-Themen 13
P Wann kommt denn nun 1.5 überhaupt? Allgemeine Java-Themen 6
temi Private statische Hilfsmethoden Allgemeine Java-Themen 33
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
P "Overriden statische Methode" Statische Methode die vererbt wird Allgemeine Java-Themen 5
N Threads statische Methoden in Threads Allgemeine Java-Themen 5
M Zeiger auf statische Variable Allgemeine Java-Themen 1
S Kapselung Statische Helper Klassen Allgemeine Java-Themen 5
C Classloading und statische Variablen Allgemeine Java-Themen 2
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
J Statische Variablen, Threadübergreifend. Allgemeine Java-Themen 4
R Statische Klasse: Best practice mit flags (2) Allgemeine Java-Themen 3
N Klasse rausfinden, an der eine statische Methode aufgerufen wurde ? Allgemeine Java-Themen 10
R statische initialisierer Allgemeine Java-Themen 7
S statische Methoden und Vererbung Allgemeine Java-Themen 6
M Zwingen eine statische Methode zu importieren Allgemeine Java-Themen 5
heart_disease Designfrage: Statische Konfigurationsklasse Allgemeine Java-Themen 10
S statische Interfaces..? Allgemeine Java-Themen 6
S Innere Klassen und die statische Methode access$x Allgemeine Java-Themen 5
S Statische Methoden in abstrakte Klassen deklarieren? Allgemeine Java-Themen 17
M Paralleler Zugriff auf statische Methode Allgemeine Java-Themen 5
J Statische Methoden in Interfaces? Allgemeine Java-Themen 10
F Statische Methode in abstrakter Superklasse definieren Allgemeine Java-Themen 4
B Statische Methode? Komisch. Allgemeine Java-Themen 5
G Statische Methoden erzwingen Allgemeine Java-Themen 2
H Zugriff auf statische Variable synchronisieren Allgemeine Java-Themen 4
A [SOLVED] Classpath und statische Variablen Allgemeine Java-Themen 6
S Tiefe Kopie einer Baumstruktur als statische Methode Allgemeine Java-Themen 8
M statische Methode per reflection aufrufen Allgemeine Java-Themen 2
M statische regex und vergleiche oder immer wieder compilen Allgemeine Java-Themen 2
S Statische Methode oder nicht? Allgemeine Java-Themen 5
T in einer statischen Methode ein nicht statische Aufrufen Allgemeine Java-Themen 5
D Statische, generische Methode will nicht. Allgemeine Java-Themen 2
H Zugriff auf statische Methode durch mehrere User Allgemeine Java-Themen 19
S Auf statische Funktionen mit Java Reflections zugreifen Allgemeine Java-Themen 3
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 Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
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
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

Ähnliche Java Themen

Neue Themen


Oben