Unterschied zwischen einer globalen und einer Klassenvariablen in Java?
Ich würde gerne den Unterschied wissen, sie sind doch beide außerhalb einer Methode und werden beide mit static gekennzeichnet.
2 Antworten
Zuerst zu den Begrifflichkeiten:
Der Begriff global bezieht sich auf die Sichtbarkeit einer Variable bzw. ihrem Zugriffsbereich betrachtet aus einer bestimmten Perspektive.
So ist in diesem Beispiel a innerhalb der Methode global für alle Blöcke zugreifbar und b nur lokal innerhalb seines Blocks.
public void doSomething(){ int a = 1;
{ int b = a + 2; } }
Ein Instanzattribut c hingegen könnte nun noch dazukommen. Es wäre global innerhalb der Klasse für alle Instanzmethoden verfügbar. Die Variable a hingegen ist es nur lokal innerhalb seiner Methode.
Ein statisches Attribut hingegen beschreibt den Zeitpunkt, wann das Attribut erzeugt wird und das alle Instanzen der Klasse ihren Wert teilen.
Wenn du es so willst, liegt der Unterschied zwischen Klassenattribut und globaler Variable darin, dass das Klassenattribut stets global innerhalb ihrer Klasse verfügbar ist, eine globale Variable hingegen ausgehend von ihrem Kontext bewertet werden muss, in dem sie sich befindet.
Solltest du nun von 2 Klassenattributen sprechen, so unterscheiden sich diese bezogen auf ihrer Sichtbarkeit höchstens darin, wie sie nach außen hin zugreifbar sind.
public static int a; // außerhalb der Klasse zugreifbar
private static int b; // nur innerhalb der Klasse zugreifbar
Der access modifier reguliert in diesem Fall die Sichtbarkeit.
in Java gibt es keine globalen Variablen.
prinzipiell richtig, aber man kann mit static annähernd eine globale Variable erzeugen. (Auch wenn es nicht wirklich eine globale Variable ist)