C
canndy
Gast
Hallo!
Folgendes "Programm" (2 Packages) ist gegeben:
Im Package package1 sind diese beiden Klassen:
Im Package package2 befindet sich diese Klasse:
So, der Compiler gibt jetzt folgenden Fehler aus:
Ich sehe ein, dass es ein Fehler ist. Aber ist das nicht ein falscher Grund? Der Zugriff findet ja von innerhalb des Packages statt, wo die Variable deklariert wurde!
In der JLS steht (§8.2):
Demnach wird die Variable "packagePrivateVariable" gar nicht vererbt. Und das ist dann der Grund für den Fehler.
Anscheinend kommt beides aufs Gleiche raus? Meine Frage ist jetzt, wie seht Ihr das? Sollte man besser denken, dass die Variable nicht vererbt wird -- oder sollte man denken, dass die Variable zwar vererbt wird, aber ihre Sichtbarkeit / Zugänglichkeit auf "Null" gesetzt wird?
Danke,
canndy
Folgendes "Programm" (2 Packages) ist gegeben:
Im Package package1 sind diese beiden Klassen:
Code:
public class SuperClass {
int packagePrivateVariable;
}
public class SubClass extends package2.SomeClass {
int test = packagePrivateVariable;
}
Im Package package2 befindet sich diese Klasse:
Code:
public class SomeClass extends package1.SuperClass {
}
So, der Compiler gibt jetzt folgenden Fehler aus:
Code:
packagePrivateVariable is not public in package1.SuperClass; cannot be accessed from outside package
Ich sehe ein, dass es ein Fehler ist. Aber ist das nicht ein falscher Grund? Der Zugriff findet ja von innerhalb des Packages statt, wo die Variable deklariert wurde!
In der JLS steht (§8.2):
Only members of a class that are declared protected or public are
inherited by subclasses declared in a package other than the one in which the class
is declared.
Demnach wird die Variable "packagePrivateVariable" gar nicht vererbt. Und das ist dann der Grund für den Fehler.
Anscheinend kommt beides aufs Gleiche raus? Meine Frage ist jetzt, wie seht Ihr das? Sollte man besser denken, dass die Variable nicht vererbt wird -- oder sollte man denken, dass die Variable zwar vererbt wird, aber ihre Sichtbarkeit / Zugänglichkeit auf "Null" gesetzt wird?
Danke,
canndy