Wann sollte man einen Konstruktor deklariert werden, die im öffentlichen und, wenn es sein soll, Paket-private?
In Java sehe ich manchmal den Konstruktor deklariert als 'public' und manchmal hat es keine zugriffsmodifizierer heißt, es ist package-private. Was sind die Fälle, in denen ich verwenden muss man über die über-und Umgekehrt?
InformationsquelleAutor Jon | 2010-12-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Frage enthält die Antwort. Machen Sie den Konstruktor public, wenn Sie zulassen, dass Ihr client-code außerhalb des Pakets instanziieren Sie das Objekt. Wenn Sie das nicht wollen( weil Objekt-Paket spezifische oder das Objekt selbst kann nicht direkt instanziert werden ) verwenden Sie den package-private.
Zum Beispiel, wenn Sie einen client-code, der sollte ein
Car
( ist ein interface ) und einige Paket -com.company.cars
enthält Klassen, die implementiert dieCar
- Schnittstelle(BMW, WV, Opel
) und so weiter, dann würden Sie lieber in einer Fabrik, die instanziiert PKW erforderlich Umsetzung. Also nur die Fabrik hätte man Zugriff auf den Konstruktor.InformationsquelleAutor Vladimir Ivanov
Modifikatoren gilt Konstruktor gleiche wie Felder und Methode.
public
jede Klasse kann Zugang und sehen.private
, keine andere Klasse außerhalb der Klasse kann Zugang oder sehen.Lesen Sie mehr über access control Dokumentation
In der Regel Konstruktoren sind aus
private
wenn Sie Factory-pattern oder ein Singleton-patternprivate
Konstruktoren für die "Factory" - Muster? Du meinst statische factory [Schöpfung] Methoden, und nicht der GoF-Abstrakte Fabrik (in der Regel nur Fabriken genannt) und Factory-Methoden.ja, Statische Factory-Muster
InformationsquelleAutor Jigar Joshi
"Package private" (default access), obwohl der Standard, ist selten eine gute Wahl, außer auf der äußeren Klasse/interface/enum. Es würde angemessen sein, für eine abstrakte Klasse mit einem festen Satz von Unterklassen (im gleichen package), ein bisschen wie ein
enum
Konstruktor in der gleichen enum. Wenn die äußeren Typ ist package-private ist, könnte man genauso gut verlassen, öffentlichen Bauherren und Mitglieder der öffentlichkeit eher als eine exotische zugriffsmodifizierer.InformationsquelleAutor Tom Hawtin - tackline