2008-10-28 11 views
14

denke ich in diesem Fall besteht keine Notwendigkeit, einen öffentlichen Konstruktor zu erklären, da die Klasse sowieso nicht zugänglich außerhalb des Pakets ist. Aber gibt es versteckte Auswirkungen, wenn die Klasse nur privaten Konstruktor hat?Sollen wir einen öffentlichen Konstruktor deklarieren, wenn die Klasse als Paket privat deklariert ist?

+0

Eine verwandte Frage an Dich zu denken. Sollte eine öffentliche abstrakte Klasse einen öffentlichen oder geschützten Konstruktor haben? –

Antwort

22

Nein, Sie müssen nicht den öffentlichen Konstruktor zu erklären; Paket private Konstruktoren werden genauso nutzbar sein. Klassen außerhalb des Pakets könnten den Konstruktor sowieso nicht verwenden, da sie die Klasse nicht sehen können.

2

Wenn Ihre Klasse Paket privat ist, sind die Zugriffsebenen, die durch das Schlüsselwort public zusammen mit dem Standard Paket private Zugriffsebene des Konstruktors angezeigt werden, äquivalent.

Sie können jedoch angeben, das Verhalten Sie Absicht, das Verfahren zu haben, falls die Klasse Sichtbarkeit während der Entwicklung verändert wird. Dies kann passieren, wenn Sie einige APIs öffnen, die zuvor intern waren. In diesem Fall sieht es eher konservativ aus, den Konstruktor als Paket privat zu deklarieren, da Sie nicht alle Türen gleichzeitig öffnen.

+0

Hi Denis R. Ich habe einige umfangreiche Änderungen vorgenommen, um die Antwort lesbarer zu machen. Könnten Sie schnell darüber blättern und zurückrollen, wenn Sie nicht einverstanden sind? –

+0

Das ist gut für mich, danke Maarten –

-2

Wir können einen Konstruktor nicht in einer privaten Klasse publizieren, da auf private Klasse nicht zugegriffen werden kann und auf keine seiner Methoden zugegriffen werden kann und da Konstruktoren spezielle Memberfunktionen sind, so dass auch von außen nicht zugegriffen werden kann Öffentlichkeit, weil es letztlich die private Definition der Klasse verletzt

-2

Konstrukteurs kann nicht im privaten Teil der Klasse definiert werden. Der Compiler lässt dies nicht zu, da für Mitglieder, die als privat definiert sind, das Hauptprogramm keinen Zugriff hat. Wann immer wir es anrufen, ist es nur für die Klasse zugänglich, in der wir es oder das Freund-Label definieren. Der Compiler gibt den Namen des Konstruktors an, auf den nicht zugegriffen werden kann.

+2

Das klingt wie eine C++ Antwort vielleicht? Obwohl er dies in seiner Frage nicht direkt erwähnt hat, hat der Fragesteller diese Frage mit "Java" versehen, so dass diese Antwort nicht wirklich zutrifft. – Brigham

+0

Kann eine innere Klasse einen privaten Konstruktor haben? – Raedwald

Verwandte Themen