Statische Methoden!?

Status
Nicht offen für weitere Antworten.

kara_lahana

Mitglied
ich kann mir vorstellen wie die static variable laufen

jedes mal wenn methode auf gerufen wird,haben die statische gleiche wert solange man sie nicht initialisiert!
aber wie kann es ein statische methode oder kontrukter geben ????


liefern die ein statishe wert oder wie ?????
 

bummerland

Top Contributor
Das sind halt methoden, für die du kein konkretes objekt brauchst. ein beispiel wären die message dialoge der klasse joptionpane. die sind statisch. statische konstruktoren gibts nicht, das wäre ja ein widerspruch in sich.
 

Illuvatar

Top Contributor
Ich glaube, "statische Konstruktoren" habe ich schon als Bezeichnung für das hier gehört:
Code:
static{
  doSomething();
}
Das ist Code, der einmal im Programm aufgerufen wird, wenn die Klasse zum ersten mal geladen wird.

kara_lahana hat gesagt.:
jedes mal wenn methode auf gerufen wird,haben die statische gleiche wert solange man sie nicht initialisiert!
Was soll das bedeuten? Wenn man Variablen nicht initialisiert haben sie immer ihren Standardwert. Das hat nichts mit static zu tun.
Einfach gesagt, gehört alles, was "static" ist, zu einer Klasse und nicht zu einem Objekt der Klasse. Das ist dann 'objektorientiert'.
 

kara_lahana

Mitglied
Illuvatar hat gesagt.:
Ich glaube, "statische Konstruktoren" habe ich schon als Bezeichnung für das hier gehört:
Code:
static{
  doSomething();
}
Das ist Code, der einmal im Programm aufgerufen wird, wenn die Klasse zum ersten mal geladen wird.

kara_lahana hat gesagt.:
jedes mal wenn methode auf gerufen wird,haben die statische gleiche wert solange man sie nicht initialisiert!
Was soll das bedeuten? Wenn man Variablen nicht initialisiert haben sie immer ihren Standardwert. Das hat nichts mit static zu tun.
Einfach gesagt, gehört alles, was "static" ist, zu einer Klasse und nicht zu einem Objekt der Klasse. Das ist dann 'objektorientiert'.

Du hast recht, ich habe bischen falsch erklärt was ich unter static verstehe.
eingentlich meine Frage bezieht nicht ganz auf konstruktoren sondern mehre auf Methoden.

Code:
class Menschen{

  static int anzahl=0;

  Menschen(){

    ++anzahl;

  }
}

jedes mal wann ich ein Meschen opjekt erzeuge. erhöht die variable anzahl sein wert ein hoch.
wenn wir es unstatic erzeugen könnte,welche compiler nicht zulasst.hatte jede Meschen object in seinem anzahl variable den wert 0.

:autsch:

Code:
static int anzahl=0;

Menschen(){

++anzahl;

}

static Menschen neues(){

if(anzahl<3)
return new Messchen();
else
return null;
}

}


genau dies Fall meinte ich, warum soll diese neues Methode stasic sein.
 

Illuvatar

Top Contributor
Das ist eine Sogenannte factory-Methode.
Dein Beispiel ist eine Abart von einem Singleton, wenn man das so sagen kann. Es garantiert, dass es nie mehr als drei Instanzen der Klasse Mensch gibt.
Code:
public class Mensch
{
  static int menschen = 0; //Variable, die die Anzahl der Menschen zählt
  private Mensch() //Konstruktor ist private, kann nicht von anderen Klassen aufgerufen werden.
  {
  }
  public static void getMensch() //factory-Methode, um einen Mensch zu erhalten (das ist die einzige Möglichkeit, eine Instanz der Klasse Mensch zu erhalten)
  {
    if (menschen <= 3){
      menschen++;
      return new Mensch(); //Funktioniert, da gleiche Klasse
    }else
      return null; //Wenn es schon drei gibt, wird null zurückgegeben
  }
}

Statische Methoden sind aber auch für andere Dinge gut.
Mir fällt gerade kein gutes Beispiel ein, aber grundsätzlich ist es so:

Alles, was statisch ist, gibt es einmal pro gestarteter Runtime. Statische Methoden dürfen nicht direkt auf Objektvariablen/-methoden zugreifen. Man kann auf sie mit Klassenname.Methoden-/Variablenname zugreifen.
Der Rest existiert einmal pro Instanz der Klasse. Methoden des Objekts dürfen frei auf Methoden/Variablen der Klasse(static) zugreifen. Um darauf zuzugreifen, muss man über den Konstruktor eine neue Instanz der Klasse erstellen, und dann mit Objektvariablenname.Methoden-/Variablenname zugreifen.

Dieser Unterschied gilt übrigens fast genauso für innere Klassen.

Mist, mir fällt jetzt erst ein, dass das alles auch im FAQ steht :( .
http://www.java-forum.org/de/viewtopic.php?t=1531
 

kara_lahana

Mitglied
Thanke schon !

bei der FAQ hat mir dies Satz besonders geholfen;)

Klassenvariablen sind daher vergleichbar mit globalen Variablen, denn ihre Lebensdauer erstreckt sich auf das gesamte Programm

just i can think in static ;)
 

citizen_erased

Bekanntes Mitglied
Illuvatar hat gesagt.:
Ich glaube, "statische Konstruktoren" habe ich schon als Bezeichnung für das hier gehört:
Code:
static{
  doSomething();
}
.

wenn ich mich nicht irre, wird das ding da nicht als konstrukturo bezeichnet, sondern als "klasseninitialisierer (static initialiser)"
solche dinger
werden genau einmal ausgefü hrt, und zwar unmittelbar nachdem die betreffende Klasse geladen wurde.
erst danach werden die anweisungen im konstruktur ausgeführt. man kann also eigentlich nicht von "statische Konstruktoren" reden - die gibts einfach nicht.
 

Illuvatar

Top Contributor
Ich würde sie auch nicht als statische Konstruktoren bezeichnen, ich denke auch nicht, dass es sowas gibt, aber ich meine, das schonmal in dem Zusammenhang gehört zu haben und habe gedacht, dass kara_lahana vielleicht das meint.
 

Illuvatar

Top Contributor
Ergänzung: Ich habe in der Fehlerliste von Javabuch.de das hier gefunden:

Abschnitt 8.3.4 (im Buch auf Seite 176). Der hier verwendete Begriff Statischer Konstruktor ist evtl. etwas unüblich. In der offiziellen Sprachspezifikation wird das entsprechende Konstrukt als Statischer Initialisierer bezeichnet. Alle Vorkommen sollten entsprechend geändert werden. Dies gilt auch für die Kapitel-Zusammenfassung (im Buch auf Seite 182).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
A Statische Variable in Methoden Java Basics - Anfänger-Themen 7
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
M Statische Methoden Java Basics - Anfänger-Themen 22
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
A Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern? Java Basics - Anfänger-Themen 5
H statische methoden und sichtbarkeit Java Basics - Anfänger-Themen 13
nadoria statische Methoden (Klassenmethoden) Java Basics - Anfänger-Themen 3
G Statische Methoden? Java Basics - Anfänger-Themen 2
kb statische methoden und throws exception Java Basics - Anfänger-Themen 2
N Unterschied statische Attribute u. Methoden <-> objekt Java Basics - Anfänger-Themen 4
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
D Statische und Nicht-Statische Methoden Java Basics - Anfänger-Themen 7
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
E statische Variable ändert sich Java Basics - Anfänger-Themen 7
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
A statische Arraylist Java Basics - Anfänger-Themen 6
Q Variablen Statische Variablen Java Basics - Anfänger-Themen 8
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
K Statische Bindung Java Basics - Anfänger-Themen 6
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S statische Methode nebenläufig Java Basics - Anfänger-Themen 2
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
A Statische Methode "vererben" - Zwang durch annotation processor Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
S Statische Klassen/ Singleton Java Basics - Anfänger-Themen 13
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
B statische Variable Java Basics - Anfänger-Themen 10
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
A Stilfrage: statische Variable mit Instanz der gleichen Klasse Java Basics - Anfänger-Themen 8
H Statische generische Methode Java Basics - Anfänger-Themen 2
A statische Attribute: Vererbung und Zugriff darauf Java Basics - Anfänger-Themen 15
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
hdi statische synchronisation Java Basics - Anfänger-Themen 6
G statische ArrayList? Java Basics - Anfänger-Themen 8
K Statische Variablen von Objekten im Array Java Basics - Anfänger-Themen 15
K nicht-statische Methode aufrufen Java Basics - Anfänger-Themen 3
S statische variable initialisieren mit exception Java Basics - Anfänger-Themen 2
G statische Variable zugreifen bzw. setzen Java Basics - Anfänger-Themen 6
T in statischem Kontext auf nicht statische Variable beziehen Java Basics - Anfänger-Themen 5
M Statische Funktion Java Basics - Anfänger-Themen 2
M öffentliche nicht-statische Funktion fremder Klasse ausführn Java Basics - Anfänger-Themen 16
C args[] als statische Variablen speicher oder wie? Java Basics - Anfänger-Themen 12
P nicht statische methode instantiieren Java Basics - Anfänger-Themen 7
K statische variablen und methode Java Basics - Anfänger-Themen 3
H Was ist nocheinmal eine statische Klasse? Java Basics - Anfänger-Themen 6
H statische, dynamischer Typ von Variablen Java Basics - Anfänger-Themen 1
M Konstruktor eine statische Methode? Java Basics - Anfänger-Themen 9
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
O nicht-statische Inhalte auf statische Inhalte verweisen Java Basics - Anfänger-Themen 19
M wann statische klassen? Java Basics - Anfänger-Themen 14
U statische Variablen Java Basics - Anfänger-Themen 12
F Statische Methode - Nicht Statische Methode Java Basics - Anfänger-Themen 10
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
L Rekursive Methoden Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben