„Hallo, mein Lieblingsschüler. Jetzt werde ich dir etwas über die Sichtbarkeit von Variablen erzählen.“

„Hä? Können Variablen unsichtbar sein?“

„Nein. Die Sichtbarkeit oder der Scope einer Variablen bezeichnet die Stellen im Code, an denen du auf diese Variable verweisen kannst. Du kannst einige Variablen überall im Programm verwenden, aber andere können nur innerhalb ihrer Klasse verwendet werden, und wieder andere nur innerhalb einer Methode.

„Zum Beispiel kannst du eine Variable nicht verwenden, bevor sie deklariert wurde.“

„Das klingt nachvollziehbar.“

„Hier sind ein paar Beispiele:“


public class Variables

{
   private static String TEXT = "The end.";
  ┗━━━━━━━━━━━━━━┛
   public static void main (String[] args)
                          ┗━━━━━━━┛
  {
     System.out.println("Hi");
     String s = "Hi!";
   ┏┗━━━━┛
    System.out.println(s);
    if (args != NULL)
    {
       String s2 = s;
      ┗━━━━┛
   
      System.out.println(s2);
     
    }
    Variables variables = new Variables();
    System.out.println(variables.instanceVariable);
    System.out.println(TEXT);
   
  }
 
   public String instanceVariable;
  ┗━━━━━━━━━━━━━━━┛
   public Variables()
   {
      instanceVariable = "Instance variable test.";
   }
}

1. Eine in einer Methode deklarierte Variable existiert (ist sichtbar) vom Beginn ihrer Deklaration bis zum Ende der Methode.

2. Eine in einem Codeblock deklarierte Variable existiert bis zum Ende des Codeblocks.

3. Die Parameter einer Methode existieren überall innerhalb der Methode.

4. Variablen in einem Objekt existieren während der gesamten Lebensdauer des Objekts, das sie enthält. Ihre Sichtbarkeit wird auch durch spezielle Zugriffsmodifikatoren definiert: public und private.

5. (Klassen-)Variablen mit dem Modifikator static existieren während der gesamten Laufzeit des Programms. Ihre Sichtbarkeit wird auch durch Zugriffsmodifikatoren definiert.

„Ich liebe Bilder. Sie machen alles verständlicher.“

„Guter Junge, Amigo. Ich wusste immer, dass du ein kluger Kerl bist.“

„Ich werde dir auch etwas über Zugriffsmodifikatoren erzählen. Keine Angst. Sie sind gar nicht kompliziert. Hier siehst du die Wörter public und private.“

„Ich habe keine Angst. Mein Auge zuckt nur.“

„Ich glaube dir. Du kannst festlegen, wie von anderen Klassen auf die Methoden und Variablen einer Klasse zugegriffen wird (bzw. inwiefern diese sichtbar sind). Du kannst jeder Methode oder Variable nur einen Zugriffsmodifikator zuweisen.

1. Zugriffsmodifikator public.

Du kannst eine Variable, Methode oder Klasse, die mit dem Modifikator public gekennzeichnet ist, von überall im Programm aus verwenden. Dies ist die höchste Zugriffsebene – hier gibt es keine Einschränkungen.

2. Zugriffsmodifikator private.

Du kannst eine Variable oder eine Methode, die mit dem Modifikator private gekennzeichnet ist, nur von der Klasse aus verwenden, in der sie deklariert ist. Für alle anderen Klassen ist die gekennzeichnete Methode oder Variable unsichtbar, als ob sie nicht existiert. Dies ist der höchste Grad an Geschlossenheit – Zugriff nur innerhalb der eigenen Klasse.

3. Kein Modifikator.

Wenn eine Variable oder eine Methode nicht mit einem Modifikator gekennzeichnet ist, gilt sie als mit einem ‚Standard‘-Zugriffsmodifikator gekennzeichnet. Solche Variablen und Methoden sind für alle Klassen in dem Paket, in dem sie deklariert sind, sichtbar. Und nur für diese. Diese Zugriffsebene wird manchmal als ‚paketprivater‘ Zugriff bezeichnet, da der Zugriff auf die Variablen und Methoden für das gesamte Paket, das ihre Klasse enthält, offen ist.

Hier eine Tabelle, die zusammenfasst, was wir besprochen haben:“

Modifikatoren Zugriff von…
Eigene Klasse Eigenes Paket Jede Klasse
private Ja Nein Nein
Kein Modifikator (paketprivat) Ja Ja Nein
public Ja Ja Ja