CodeGym /Java Kurs /Java Syntax /Sichtbarkeit von Variablen

Sichtbarkeit von Variablen

Java Syntax
Level 2 , Lektion 4
Verfügbar

„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
Kommentare (11)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Calum Alec Mais Level 5, Hörbranz, Austria
14 Juli 2023
Mit dem Bild wirklich gleich viel verständlicher 😁
Dario Level 12, Germany, Germany
14 Mai 2023
geil
Hariboto Level 7, Dresden, Germany
3 Februar 2023
Der 'paketprivate' Zugriff hört sich praktikabel an. Dann kann man ja einfach die Zugriffsmodifikatoren per default weglassen, dann hat man es einfacher.
Marcellus Level 6, Denmark
21 Dezember 2022
wowiiiii
Array Level 11, Germany, Germany
18 Dezember 2022
Sehr schöne Erklärung der Modifikatoren. Denkt man gleich drüber nach wie locker oder geizig mit einem public oder kein Modifikator umgegangen werden sollte.
Anonymous #11165943 Level 3, Braunschweig, Germany
22 November 2022
nice
ozzy Level 3, Germany, Germany
23 Mai 2022
Noice
mo zero Level 3, Germany
16 März 2022
sehr nice!
athanas Level 6, Germany
16 Juli 2021
lässig
25 April 2020
sehr verständlich erläutert, danke :)