Könnt Ihr mir hier erklären, wie man in Java auf ein allgemein sichtbares Datenelement
bzw. eine allgemein sichtbare Methode zugreift?
Und zwei grundsätzlich unterschiedliche Varianten, die sich aus der Deklaration des
Datenelementenes bzw. der Methode ergeben.
Das muß mit “static” drin sein, oder?
Wie zum Beispiel: public static void main(String [] args) { ... }
Und das soll auch sein, hier:
....
{
...
zaehler++;
...
}```
Diese Aufgaben - ich stehe wieder noch auf dem Schlauch! *seufz*
static sollte der Ausnahmefall sein - bzw. nur dann einsetzen, wenn eine Klasse keine Daten hält. Ein gutes Beispiel ist hierfür die Standardklasse “Math”. Diese Klasse berechnet nur und speichert keine Daten. Deshalb sind alle Methoden static. Ansonsten werden neue Objekte von Klassen erzeugt, und von dort dann Methoden aufgerufen. Überall zugänglich sind nur public Methoden. Aber am Besten liest du dich mal ein wenig in Objekt-Orientierte-Programmierung ein.
jein… wenn man eine Methode hat in einer Klasse die auf keinen Zustand basiert, so kann diese ruhig static sein…
ansonsten wie S schon sagt… static sind an die Klasse gebunden und ueber die Klasse erreichbar… z.b. Math.pow()
bei den anderen Methoden (sog. Instanzmethoden) brauchst du eine Instanz der Klasse um dann auf die Methoden zugreifen zu koennen. z.b. Point p = new Point(1,2); p.getX()
eine Klasse kann ruhig Daten halten und dennoch statische Methoden beinhalten, eben wenn diese Methoden nicht auf einen Zustand der Klasse basieren (utility methoden).
deine aussage bezieht sich ja darauf dass die gesamte Klasse keinen Zustand hat
statische Methoden erkennt man an dem Schluesselwort static.
zb
public static int getANumber() [
return 1;
}
}```
aufrufen kann man dies ueber MyClass.getANumber() - d.h. man kann ueber die Klasse die Methode (oder auch Variablen) erreichen...
Instanzmethoden haben kein static
zb
```public class MyClass {
private int myNumber;
public int getMyNumber() [
return myNumber;
}
}```
fuer einen Aufruf wird eine Instanz der Klasse benoetigt
```MyClass mc = new MyClass();
mc.getMyNumber()```
besser verstaendlich ?