Mit einem Scope bezeichnet man die Sichtbarkeit von Klassen, Variablen und Methoden. Mit der Sichtbarkeit wird der Bereich beschrieben, in dem auf eine Klasse, Variable oder Methode zugegriffen werden kann.
Klassen / Methoden / Globale Variablen
Bei Klassen, Methoden und globalen Variablen wird der Scope durch einen Modifier bestimmt:
- public: Keine Einschränkung der Sichtbarkeit
- protected: Die Sichtbarkeit ist innerhalb der Vererbungshierarchie gegeben.
- private: Die Sichtbarkeit ist auf die Klasse eingeschränkt.
- default: Wenn kein Modifier angegeben ist, spricht man von einer default-Sichtbarkeit. Die Sichtbarkeit auf das Paket beschränkt.
Lokale Variablen
Lokale Variablen sind Variablen, die innerhalb einer Methode deklariert sind. Sie sind innerhalb des Blockes, in dem sie deklariert wurden, sichtbar. Ein Block besteht aus Anweisungen, die in geschwungene Klammern eingeschlossen sind. Hat eine lokale Variable den gleichen Namen wie eine globale Variable, verschattet die lokale Variable die globale Variable. Das heißt, innerhalb des Blocks wird die lokale Variable verwendet. Nach Beenden des Blocks wird mit der globalen Variable weitergearbeitet. Mehr dazu findest du im Artikel “Was ist der Unterschied zwischen einer lokalen und einer globalen Variable?” in unserer FAQ.
Beispiel:
public class ScopeDemo { int a = 99; void foo() { for (int a = 0; a < 3; a++) { System.out.print(a + " "); } System.out.println(a); } void setA(int a) { this.a = a; } }
In Zeile 2 wird die globale Variable a deklariert und initialisiert.
In Zeile 5 wird die lokale Variable a deklariert und initialisiert .
Im Schleifenkörper (Zeile 6) wird die lokale Variable a verwendet.
In Zeile 8 wird wieder auf die globale Variable a zugegriffen.
Ein Aufruf der Methode foo() liefert die Ausgabe: 0 1 2 99
In Zeile 11 wird die lokale Variable a als Methodenparameter deklariert.
In Zeile 12 wird die Verschattung mit dem Schlüsselwort this aufgehoben.