2.4.1 | Die Hierarchie der Namensräume |
Die Hierarchie der Namensräume gliedert sich folgendermaßen:
- Ganz außen steht der Namensraum des Pakets, in dem eine Klasse vereinbart ist. Klassen können zu Paketen zusammengefasst werden.
- Danach kommt der Namensraum der Klassen. Bei geschachtelten Klassen werden die Namensräume auch ineinander geschachtelt, wobei gleiche Bezeichner in umschließenden Namensräumen verdeckt werden.
- Die Namensräume der einzelnen Methoden werden dann in die Klassen eingebettet. Hierbei überdecken die Bezeichner von Methodenparametern die Bezeichner von Datenelementen der Klasse. Wenn Datenelemente durch Methodenparamter verdeckt werden, müssen sie mit this qualifiziert werden.
- Innerhalb der Methoden können noch geschachtelte Blöcke stehen, zum Beispiel try/catch-Blöcke, die im Zusammenhang mit Exceptions benutzt werden. Variablen, die innerhalb eines try-Blocks vereinbart werden, sind außerhalb unsichtbar.
Bei der Auflösung von Bezeichnern wird bezüglich der Schachtelung der Namensräume grundsätzlich von »innen nach außen« vorgegangen. Wenn der Compiler auf einen Bezeichner trifft, sucht er zunächst im lokalen Namensraum, danach im direkt übergeordneten und so weiter bis zur obersten Ebene. Die Suche endet beim ersten Treffer, d. h., wenn in einem Namensraum eine passende Vereinbarung gefunden wird, werden Vereinbarungen in übergeordneten Namensräumen nicht mehr berücksichtigt.