# ".should be accessed in a static way"?



## bicpi (26. Dez 2004)

Was bedeutet folgendes?

"The static field Klasse1.VAR should be accessed in a static way"

Ich versuche also auf die (final static) VAR in Klasse1 von Klasse2 aus zuzugreifen mit "Klasse1.VAR". Wie soll ich sie sonst ansprechen ?
Danke schön.


----------



## Beni (26. Dez 2004)

Du machst vermutlich sowas:

```
A a = new A();  // oder was auch immer
int blupp = a.VAR;
```

Besser wäre aber sowas:

```
int blupp = A.VAR;
```


----------



## bicpi (26. Dez 2004)

Mh, das unterscheidet sich doch in der Schreibweise groß/klein, lässt sich das überhaupt so ansprechen?? Ich verwende auf jeden Fall in Deklaration und Zugriff genau die gleiche Schreibweise. "Auf statische Weise zugreifen" - ich kann mir darunter nichts vorstellen..


----------



## Illuvatar (27. Dez 2004)

Benis Beispielnamen waren vielleicht etwas schlecht gewählt. Vielleicht ist es hiermit besser verständlich:
Nicht

```
Klasse objekt = new Klasse();
int var = objekt.var;
```
sondern

```
Klasse objekt = new Klasse();
int var = Klasse.var;
```


----------



## bygones (27. Dez 2004)

weil man Klassennamen mit Großbuchstaben beginnt, Instanznamen mit kleinbuchstaben... 

einfach heißt es, du sollst die Variable über die Klasse und nicht über eine Instanz ansprechen...


```
Klasse instanzname = new Klasse();
instanzname.VAR; // ansprechen über instanz
Klasse.VAR; // gut, anssprechen über Klasse
```


----------



## L-ectron-X (27. Dez 2004)

OK, noch ein Versuch... :wink:
Das bedeutet, Du hast wahrscheinlich eine Instanz erstellt und willst damit auf eine statische Variable/Methode zugreifen.
Ein Zugriff auf eine statische Methode so aus:

```
Klasse.methode();
```
 oder

```
Klasse.zahl = 15;
```
für einen Zugriff auf eine statische Variable namens zahl vom Typ int.
Dabei ist die Methode statische deklariert. Also z.B. etwa so:

```
public static void methode() {
   [...]
}
```
Oder eine statische Variable, etwa so:

```
private static int zahl = 10;
```
Wenn Du nun folgendes machst:

```
Klasse referenz = new Klasse();
referenz.methode();
```
oder

```
Klasse referenz = new Klasse();
referenz.zahl = 15;
```
erhältst Du den Compiler-Fehler, den Du beschrieben hast.


----------



## bicpi (27. Dez 2004)

> einfach heißt es, du sollst die Variable über die Klasse und nicht über eine Instanz ansprechen...


Damit hab ichs kapiert und ist jetzt auch super logisch für mich  Statische Dinge existieren ja unabhängig von einer Instanz.
Einen Compilerfehler verursacht es mir aber nicht, nur einen "Hinweis" in Eclipse 

Hab mich gefreut über eure ausführlichen Antworten, Danke !


----------

