Warum static-Methoden nutzen

  • Themenstarter KartoffelKiffer
  • Beginndatum
Status
Nicht offen für weitere Antworten.
K

KartoffelKiffer

Gast
Hallo,

in meinem Methoden verwende ich fast grundsätzlich das Attribut static, so erspare ich mir etwas Schreibaufwand um "nur mal eben diese Methode aufzurufen", ich muss also nicht etxra eine Instanz davon bilden.

Ein Arbeitskollege meinte nun ich solle das besser lassen und auf das static-Attribut verzichten, es nur im Notfall gebrauchen.

Hat er da recht? Oder kann ich meinem geliebten static treu-bleiben und es weiterhin ohne Skrupel benutzen?



Mfg Tom
 

MQue

Top Contributor
auf jeden Fall hat dein Arbeitskollege recht, wenn du bei allen Methoden static dazuschreibst, dann handelt es sich erstens um Funktionen und nicht um Methoden und du kannst dann auch gleich eine andere Programmiersprache verwenden (z.B.: C/C++) -> in C ist nämlich auch alles so aufgebaut wie wenn du in Java bei den Methoden überall static dazuschreibst.
static- Methoden (Klassenmethoden) nur sehr beschränkt implementieren (z.B.: wenn alle Objekte der Klasse die eine gemeinsame Variable benutzen -> z.B: ein Instanzenzähler).

Ich würd mit den static- Methoden vorsichtig sein: static- Methoden können auch keine Objekt- Methoden aufrufen, ich glaub, da kommt man in teufels Küche.

lg
Michl
 
S

SlaterB

Gast
andererseits hat man oft hunderte Hilfoperationen so wie in der Math-Klasse,
für diese macht es absolut keine Probleme, diese statisch zu lassen

oder Integer.parseInt(), sollte man da new Integer().parseInt() aufrufen? ;)

beides hat seine Berechtigung,
man kann mit static viel falsch machen, aber wenn man sowas falsch macht, dann ist die Frage, ob man mit normalen Objekten wirklich besser umgehen kann..

wenn man weiß was man tut, gibts keine Probleme
 

MQue

Top Contributor
ausserdem, mach dann einmal mit UML eine Klassendiagramm aus deinem Programm, das macht überhaupt keinen Sinn, wenn du es so machst, dass du vorher mit UML ein Klassendiagramm machst und dann erst programmierts dann wird sich sicher ergeben, dass nicht alle Methoden statisch sind.
 
S

SlaterB

Gast
oh, ich lese gerade 'fast grundsätzlich das Attribut static'

das sieht natürlich durchaus falsch aus, besonders wenn man dann noch statisch Variablen zur Speicherung Zuständen verwendet,
der Hauptteil eines größeren Programmes sollte wirklich nicht statisch sein,
sonst muss man sich langsam wundern,

aber mit statischen Operationen geht ja allein schon Vererbung/ Interface nicht,
wenn man sowas nicht verwendet, kanns ja auch kein komplexes Programm sein?
 

Tellerrand

Bekanntes Mitglied
KartoffelKiffer hat gesagt.:
Hallo,
in meinem Methoden verwende ich fast grundsätzlich das Attribut static, so erspare ich mir etwas Schreibaufwand um "nur mal eben diese Methode aufzurufen", ich muss also nicht etxra eine Instanz davon bilden.
Es immer zu nutzen macht keinen Sinn.

KartoffelKiffer hat gesagt.:
Ein Arbeitskollege meinte nun ich solle das besser lassen und auf das static-Attribut verzichten, es nur im Notfall gebrauchen.
Komplett auf static zu verzichten ist genauso unsinnig.


Static setzt man genau dann, wenn man keine Objekteigenschaft, sondern eine Klasseneigenschaft haben will.

Ich glaube du hast hier die falsche Frage gestellt.
Jeder der weiß was static macht, kann dadurch auch entscheiden wozu es vorhanden ist und wann man es nutzt.
 
K

KartoffelKiffer

Gast
Hallo,

andererseits hat man oft hunderte Hilfoperationen so wie in der Math-Klasse,
für diese macht es absolut keine Probleme, diese statisch zu lassen

Genau darum handelt es sich ja. Meistens sind es nur kleine Funktionen, die zB einen String auseinanderpflücken oder ähnliches. Diese Hilfsoperationen lagere ich in Klassen ab, setze deren Attribute auf protected/public und static.

Und schwupps kann ich mit Klasse.Funktion() (oder mit Funktion(), wenn sie in derselben Klasse liegt) den Prozess starten.

Oder ein anderes Beispiel, eine Sicherung von Dateien starten. Ich erstelle ein Package 'Sicherung', welches alle benötigten Klassen dazu beinhaltet. Es gibt eine Hauptklasse, die den Prozess startet, die anderen sind wie erwähnt die Hilfsoperationen. Um aus einer Operation eine andere zu starten (zB das Datum der Sicherung wegschreiben) mache ich davon lediglich eine static-Methode und rufe sie auf. So muss ich nicht extra eine Instanz davon bilden und kann sie wie gewohnt aufrufen.

Weitere Hilfoperationen die das Datum der Sicherung wegschreiben beinhalten evtl wieder eigene Operationen, die in derselben Klasse stehen, diese sind dann wiederrum private static.

So baut sich schnell mal ein großer Pool an Klassen und Methoden auf.



Mfg Tom
 

Tellerrand

Bekanntes Mitglied
Das hört sich jetzt weniger nach OOP an.
Nutzt du überhaupt öfters mal mehrere Instanzen einer Klasse?
 
S

SlaterB

Gast
@Andre:
was soll denn da der Irrtum sein?

wenn man ein Objekt hat, dann kann JEDER die Operationen aufrufen,
also auch die statische Operation, da ist doch keine Kunst dabei..

;)
 

André Uhres

Top Contributor
SlaterB hat gesagt.:
..da ist doch keine Kunst dabei..
Jup, umso erstaunlicher, daß kaum einer drauf kommt :wink:
Code:
public class Test3 {
    private String name;
    public Test3( String name ){this.name = name;}
    private static void machWas(Test3 test3){
        System.out.println( "Ich bin der " + test3.name );
    }
    public static void main( String[] args ){
        Test3 test3 = new Test3( "Peter" );
        machWas(test3);
    }
}
 

Tellerrand

Bekanntes Mitglied
André Uhres hat gesagt.:
SlaterB hat gesagt.:
..da ist doch keine Kunst dabei..
Jup, umso erstaunlicher, daß kaum einer drauf kommt :wink:
Es scheitert an der Formulierung nicht am Verständnis.
Das als Parameter übergebene Objekte behandelt werden können ist so selbstverständlich, dass man dies bei der Formulierung ignoriert.

Man will ja den Unterschied zwischen statischen Funktionen und Instanzmethoden erklären und der Unterschied ist eben der, dass eine Instanzmethode auf die Attribute/Methoden ihrer Instanz Zugriff hat, eine statische aber eben keine Instanz besitzt wodurch sie auch nicht auf diese Instanz zugreifen kann.
 

André Uhres

Top Contributor
Tellerrand hat gesagt.:
..eine statische aber eben keine Instanz besitzt..
Das ist schon wieder irreführend. Hängt ganz einfach nur davon ab, ob man ihr eine gibt oder nicht.
Das mein ich ja grad damit, daß kaum einer drauf kommt, obwohl es so selbstverständlich ist.
 

André Uhres

Top Contributor
Das ist nicht pedantisch gemeint. Es ist nur eine Tatsache, daß da einfach kaum einer dran denkt, wahrscheinlich weil es so simpel ist. Das hat auch nicht so sehr etwas mit der Formulierung zu tun.
 

Tellerrand

Bekanntes Mitglied
André Uhres hat gesagt.:
Tellerrand hat gesagt.:
..eine statische aber eben keine Instanz besitzt..
Das ist schon wieder irreführend. Hängt ganz einfach nur davon ab, ob man ihr eine gibt oder nicht.
Das mein ich ja grad damit, daß kaum einer drauf kommt, obwohl es so selbstverständlich ist.
Halben Satz zitieren und dann vollkommen fehl interpretieren ist auch eine Kunstform.
 

André Uhres

Top Contributor
Tellerrand hat gesagt.:
..Halben Satz zitieren und dann vollkommen fehl interpretieren ist auch eine Kunstform.

Naja, ich weiss ja was du damit gemeint hast. Darum geht's ja auch gar nicht.

Der Punkt ist einfach das allgemeine Denkschema:
Klassenmethode --> kann nicht auf Instanzvariablen und Instanzmethoden arbeiten.

Das ist aber möglich, wenn ihr explizit eine Referenz auf das entsprechende Objekt übergeben wird.
Das wird eben allgemein einfach vergessen oder übersehen.

AlArenal hat gesagt.:
Ist eben eine von der Muse geküsste Familie ;)
Danke für das Kompliment
 

Tellerrand

Bekanntes Mitglied
André Uhres hat gesagt.:
Der Punkt ist einfach das allgemeine Denkschema:
Klassenmethode --> kann nicht auf Instanzvariablen und Instanzmethoden arbeiten.
Ich kenne ca 30 Leute die nichtmehr als Anfänger gelten und alle würden diesen Satz in den richtigen Kontext stellen, so das er gültig ist.
Ehrlich gesagt kenn ich nur 1 oder 2 blutige Anfänger bei denen es möglich wäre, dass sie den Satz so deuten wie von dir behauptet.
Das man statischen Methoden auch Parameter übergeben kann ist nunmal mit das erste was man lernt ;)

André Uhres hat gesagt.:
Das ist aber möglich, wenn ihr explizit eine Referenz auf das entsprechende Objekt übergeben wird.
Halt! ... richtig wäre es den Satz noch auf fehlende Kapselung zu spezialisieren. Oder aber auch nur ein bedingt oder so einfügen.
(Wenn schon genau, dann richtig.)
 

André Uhres

Top Contributor
Es ist ganz egal, ob Anfänger oder Fortgeschrittener, oder wie man es formuliert.
Es ist einfach so, daß man diese Kleinigkeit oft übersieht. Deshalb wollte darauf hinweisen.
 

Jango

Gesperrter Benutzer
André Uhres hat gesagt.:
Es ist ganz egal, ob Anfänger oder Fortgeschrittener, oder wie man es formuliert.
Es ist einfach so, daß man diese Kleinigkeit oft übersieht. Deshalb wollte darauf hinweisen.

...darüber hinaus täte "Tellerrand " gut dabei, sich mit seiner "versteckte" Feindseligkeit André gegenüber etwas zurücktuhalten.

@Tellerrand: Vergleiche mal die Anzahl deiner Post's mit der von André...
Und dann frag dich, wer von euch beiden bisher die meiste Hilfe gespendet hat...
 

Leroy42

Top Contributor
Jango hat gesagt.:
...darüber hinaus täte "Tellerrand " gut dabei, sich mit seiner "versteckte" Feindseligkeit André

Was bringt dich denn zu dieser Vermutung. :shock:

Jango hat gesagt.:
@Tellerrand: Vergleiche mal die Anzahl deiner Post's mit der von André...
Und dann frag dich, wer von euch beiden bisher die meiste Hilfe gespendet hat...

Das erinnert mich irgendwie daran, daß man eBayern, die noch
keine Bewertungen haben, nicht trauen soll.

==> Als Neueinsteiger chancenlos!

Oder wie jetzt?
 

Wildcard

Top Contributor
Leroy42 hat gesagt.:
Das erinnert mich irgendwie daran, daß man eBayern, die noch
keine Bewertungen haben, nicht trauen soll.
Ich hab eine ganze Weile gebraucht um zu verstehen das du nicht von elektronischen Bayern redest :cool:
 

Leroy42

Top Contributor
Wildcard hat gesagt.:
Leroy42 hat gesagt.:
Das erinnert mich irgendwie daran, daß man eBayern, die noch
keine Bewertungen haben, nicht trauen soll.
Ich hab eine ganze Weile gebraucht um zu verstehen das du nicht von elektronischen Bayern redest :cool:

Elektronische Bayern? :shock:

Gibts die denn überhaupt schon Analoge? ???:L

Gib mal bei google ein: "kleines diebisches bergvolk" :cool:

Ex-Freundin hat gesagt.:
Bayern ist ein schönes Land; da laufen bloß zuviel Bayern rum :(

Ich hat gesagt.:
der guckt wie ein Bayer vorm Eiffelturm

Hinweis: :meld:

Jede Ähnlichkeit mit Angehörigen eines bestimmten
Volksstammes ist beabsichtigt!


(Muß zum Wochenende mal ablästern :cool: )
 

Tellerrand

Bekanntes Mitglied
Aber nur wenn sie public sind :p


@Jango: Bitte?
Ich war bisher weder feindselig noch beleidigend.
Oder muss ich hier alles in Watte packen, damit auch keiner auf die Idee kommt es wäre so?
Das diese Diskussion hier etwas off Topic ist mag sein, aber schließe bitte nicht von direkten Postings auf unterschwellige Feindseligkeit.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
S static methoden Allgemeine Java-Themen 9
G static- Methoden überschreiben Allgemeine Java-Themen 10
F Methoden: static vs. instance Allgemeine Java-Themen 24
MQue static Methoden/Klassen Allgemeine Java-Themen 7
K Überschreiben von 'static'-Methoden hat anderes Verhalten? Allgemeine Java-Themen 2
E Methoden abstract static Methode Allgemeine Java-Themen 8
N nicht static und auch nicht new Allgemeine Java-Themen 3
P static Blocks und variablen Allgemeine Java-Themen 41
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S static in Interface und Klasse Allgemeine Java-Themen 2
S static methode im Interface Allgemeine Java-Themen 1
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
K Static Variablen verbieten Allgemeine Java-Themen 10
C Generic collections und static typing Allgemeine Java-Themen 4
M Warum nicht static ? Allgemeine Java-Themen 10
M Eine static-Methode verlassen Allgemeine Java-Themen 2
B Schlüsselworte [ERLEDIGT] static { } - Was ist das und wofür kann ich das brauchen? Allgemeine Java-Themen 1
J private static final String variable Allgemeine Java-Themen 8
L Non-static-Variables in Enumerationen Allgemeine Java-Themen 2
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
T Enumeration/Static Final/Bitfield Allgemeine Java-Themen 6
T Static kann nicht verändert werden Allgemeine Java-Themen 3
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
N Static oder andere Lösung Allgemeine Java-Themen 5
N Vererbung Static & private fields - Nicht ganz einfach? Allgemeine Java-Themen 4
M Wo hin mit static factory methods? Allgemeine Java-Themen 40
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
K Static - Problem Allgemeine Java-Themen 10
M Variablen Variablenzugriff aus static void Allgemeine Java-Themen 21
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
X HTTP Problem mit static/non static JTextArea Update Allgemeine Java-Themen 17
A Annotation einer Subklasse im static-Block auslesen. Allgemeine Java-Themen 6
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
B static Variable / Unterklasse Allgemeine Java-Themen 2
I Was macht static { ... } ? Allgemeine Java-Themen 8
G static inner Klassen Allgemeine Java-Themen 7
G static und dynamic linking? Allgemeine Java-Themen 32
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
E Geschwindigkeit static Allgemeine Java-Themen 6
V Static oder wie? Allgemeine Java-Themen 61
I reflection get inner static classes Allgemeine Java-Themen 2
L static main - Spezifikation? Allgemeine Java-Themen 7
G URLClassLoader stößt static Block nicht an Allgemeine Java-Themen 8
D static Allgemeine Java-Themen 46
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
oliver1974 "(.) should be accessed in a static way" Falsche W Allgemeine Java-Themen 6
P static Klassenvariable Allgemeine Java-Themen 15
B JPasswordField klassenübergreifend auslesen->static Probl Allgemeine Java-Themen 4
G Java-Befehle Native und Static Allgemeine Java-Themen 2
conan2 static-Block in Klassen Allgemeine Java-Themen 6
M JNI, static.a mit load.Library laden? Allgemeine Java-Themen 2
K Static Members von Superklasse für JEDEN Erben Allgemeine Java-Themen 6
padde479 The static method sleep(long) from the type Thread should. Allgemeine Java-Themen 2
M static-Methode vorschreiben Allgemeine Java-Themen 5
S singleton vs. static Allgemeine Java-Themen 7
G Object mit static Feldern speichern Allgemeine Java-Themen 9
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
P Singleton vs static Allgemeine Java-Themen 19
J parameterized und static fields Allgemeine Java-Themen 4
A Static reference to non-static field Allgemeine Java-Themen 10
S static umgehen Allgemeine Java-Themen 5
G static oder nicht Allgemeine Java-Themen 4
J Problem mit static/non-static Allgemeine Java-Themen 2
G getAppletContext() in static Methode Allgemeine Java-Themen 3
m@nu Programm-Models in Static-Objekten speichern Allgemeine Java-Themen 5
J Nicht-static variable in static variable kopieren - wie? Allgemeine Java-Themen 14
O does not declare a static final serialVersionUID field of . Allgemeine Java-Themen 6
G static vor einem array Allgemeine Java-Themen 2
A JSP & static-Variablen Allgemeine Java-Themen 3
B Static Import: Syntaxfrage Allgemeine Java-Themen 2
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
Z auf static Methode aus anderen Package zugreifen? Allgemeine Java-Themen 7
N this im public static void Allgemeine Java-Themen 3
C Communication zwischen zwei Projekte - static objects Allgemeine Java-Themen 4
S static mit abstract und in interface Allgemeine Java-Themen 10
D Interface, aber die Methoden bleiben teilweise gleich Allgemeine Java-Themen 35
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

Ähnliche Java Themen


Oben