Bei mehr als einer Gelegenheit habe ich mir eine variable Sichtbarkeit gewünscht, die in Java nicht möglich ist. Ich wollte, dass bestimmte Mitglieder innerhalb ihrer eigenen Klasse und innerhalb von Unterklassen sichtbar sind, aber nicht für den Rest des Pakets oder für den Rest der Welt. Mit anderen Worten, ich wollte das:
Modifier Class Package Subclass World
sub-class Y N Y N
Die Entwickler von Java Allerdings gab nur mir dies :
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Der typische Fall, wenn ich so etwas möchte, ist das Erstellen einer abstrakten Klasse. Manchmal finde ich, dass der abstrakte Elternteil Zugang zu bestimmten Mitgliedern benötigt, aber auch konkrete Kinder. Ich kann ihnen diesen Zugang gewähren, indem ich die Mitglieder mache protected
, aber das eröffnet den Zugang zum Rest des Pakets, wenn ich nicht wirklich will.
Um ganz klar zu sein, ich weiß, dass ein solcher Modifikator in Java nicht möglich ist. Meine Frage ist, warum ein solcher Modifikator nicht in Java enthalten ist. Es scheint (für mich) eine natürlichere Sichtbarkeitsstufe zu sein als entweder protected
oder die Standardeinstellung. Ist der Grund dafür nicht wichtig genug, um aufgenommen zu werden, oder hängt er eher mit möglichen Nebenwirkungen zusammen, die ich nicht berücksichtigt habe?