2014-04-15 13 views

Antwort

22

Eine Unterklasse kann den Zugriffsmodifizierer immer erweitern, da sie immer noch eine gültige Ersetzung für die Superklasse darstellt. Aus der Java-Spezifikation über Requirements in Overriding and Hiding:

Der Zugriffsmodifizierer (§6.6) eines überwiegenden oder Verfahren verstecken muss mindestens so viel Zugang als überschriebene oder versteckte Methode bieten, wie folgt:

  • Wenn Wenn die überschriebene oder ausgeblendete Methode öffentlich ist, muss die Methode zum Überschreiben oder Ausblenden öffentlich sein. Andernfalls tritt ein Fehler bei der Kompilierung auf.
  • Wenn die überschriebene oder ausgeblendete Methode geschützt ist, muss die überschreibende oder ausgeblendete Methode geschützt oder öffentlich sein. Andernfalls tritt ein Fehler bei der Kompilierung auf.
  • Wenn die überschriebene oder ausgeblendete Methode über den Standardzugriff (Paket) verfügt, darf die Methode zum Überschreiben oder Ausblenden nicht privat sein. Andernfalls tritt ein Fehler bei der Kompilierung auf.
2

Aus der Sicht einer externen Klasse, ist die öffentliche Methode nur eine neue Methode, nicht ein überwiegendes Verfahren, da die externe Klasse ohnehin nicht die geschützte Methode zugreifen konnte.

Auf der anderen Seite ist eine Verringerung der Sichtbarkeit nicht zulässig, da die externe Klasse immer eine Referenz vom Typ einer Superklasse verwenden kann, um auf ein Objekt der Unterklasse zu verweisen und die gleiche Methode aufzurufen.

0

Die Sichtbarkeit betrifft nur die externe Zugänglichkeit. Als eine public Methode kann jede externe Klasse es aufrufen.

Die Zugriffsebene der überschreibenden Methode hat keinen Einfluss auf die Sichtbarkeit der ursprünglichen Methode. Nach dem Überschreiben mit Zugriffsebenen kann auf die ursprüngliche Methode nur zugegriffen werden, indem in der Unterklasse super aufgerufen wird.

Verwandte Themen