Frage

Wenn ich eine Java-Klasse habe, das Paket-privat (deklarierte mit „Klasse“, nicht „public class“), gibt es wirklich keinen Unterschied, ob die Innen Methoden public deklariert sind oder geschützt oder Paket-private, nicht wahr? Also welche soll ich verwenden, oder wann sollte ich verwenden, welche? Ich bin ein wenig verwirrt.

War es hilfreich?

Lösung

  

Wenn ich eine Java-Klasse habe, das Paket-privat (deklarierte mit „Klasse“, nicht „public class“), gibt es wirklich keinen Unterschied, ob die Innen Methoden public deklariert sind oder geschützt oder Paket-private, nicht wahr?

Nun sofort vielleicht auch nicht. Aber wenn man dann (oder in der Zukunft) erklärt eine ‚geschützt‘ oder ‚öffentlich‘ Klasse, die erbt von der Paket-privaten Klasse, dann der Sichtbarkeit der Mitglieder der ursprünglichen Klasse tun Materie.

Wie @kmccoy weist darauf hin, die Klasse als final wird die Möglichkeit von Unterklassen zu deklarieren.

Das ist aber wirklich nur Augenwischerei. Wenn Sie dann entscheiden, dass Sie wirklich Subklassen erstellen müssen, entfernen Sie einfach die final ... und dann sind Sie wieder in der Situation, in der die Wahl der Zugriffsmodifikatoren nicht egal.

IMO, ist unter dem Strich, dass Sie die am besten geeigneten Modifikatoren wählen sollen ... auch wenn es jetzt nicht notwendig, richtig ist. Wenn nichts anderes, Ihre Wahl von Modifikatoren sollte Ihre Absicht dokumentieren, wo die Abstraktion Grenzen liegen.

Andere Tipps

öffentliche Methoden in einem Paket Klasse sind öffentlich Klassen im gleichen Paket. Aber private Methoden werden von Klassen im selben Paket nicht zugänglich sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top