Unterschied zwischen einer globalen und einer Klassenvariablen in Java?

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.


hairybear  25.11.2017, 14:44

prinzipiell richtig, aber man kann mit static annähernd eine globale Variable erzeugen. (Auch wenn es nicht wirklich eine globale Variable ist)

0
freejack75  25.11.2017, 14:45
@hairybear

schon richtig.

In der Frage steht "beide mit static" -- und es gibt eben nur die.

0