Gültigkeitsbereich von Klassen



  • Wenn man eine Klasse ohne Modifizierer erstellt, wird die Klasse automatisch in das default-Package aufgenommen, indem auch die Klasse Object def. ist. (also java.lang)

    Also wäre ja praktisch jede Klasse ohne Modifizierer im gleichen Gültigkeitsbereich ?
    Liege ich mit dieser Annahme richtig?



  • Klassen, die in einer Quellcode-Datei ohne package-Klausel stehen, befinden sich im anonymen Package (!= java.lang). Dies ist zu vermeiden, denn

    - es gibt nur ein anonymes Package. Du kannst leicht Namenskonflikte bekommen.
    - du kannst innerhalb eines anderen Packages nicht mehr auf diese Klasse zugreifen. Denn dazu müsstest du das anonyme Package ansprechen und das geht (mangels Name) nicht.

    Unter "Modifizierer" würde ich btw. etwas anderes verstehen, sowas wie abstract, oder public. Das Wort ist nicht glücklich gewählt. 🙂



  • Hab nur grad die Stelle im Buch (Java Professionell) gelesen; das war noch etwas unklar.

    Klassen, die in einer Quellcode-Datei ohne package-Klausel stehen, befinden sich im anonymen Package (!= java.lang).

    Im Buch steht da genau: "Haben sie ihre Klasse in keinem Paket def., so wird sie in das Paket aufgenommen, in dem auch die Klasse Object def. ist"
    Und die ist doch in java.lang.Object ?

    Es hat insofern schon etwas mit Modifizierer zu tun, weil ich ja wissen wollte, wie es ist, wenn man die Klasse ohne Modifizierer erstellt.
    Hier steht halt nichts von anonymem Package, mal schauen vielleicht später mehr.



  • Mit dem "Modifizierer" habe ich was anderes gemeint, ich wollte lediglich zum Ausdruck bringen, dass eine package-Klausel kein Modifizierer ist.

    Haben sie ihre Klasse in keinem Paket def., so wird sie in das Paket aufgenommen, in dem auch die Klasse Object def. ist

    Das ist definitiv falsch. Ich würde das Buch sofort wegschmeißen.



  • Hehe, das hat unser Dozent empfohlen. 😃
    Naja, werd mal weiterschauen. Vielleicht klärt sich das noch auf.


Anmelden zum Antworten