2つの異なるパッケージに2つのクラスがあります。あるクラスでは、アクセス修飾子を設定せずにコンストラクターを定義しました。このクラスのオブジェクトを別のパッケージでインスタンス化すると、エラー「the constructor xxx() is not visible
」が発生します。
public
に変更されたアクセスを定義する場合は問題ありません。コンストラクターはデフォルトでパブリックだと思いましたか?
アクセス指定子なし!= public
パッケージプライベートの修飾子はありません。チェック doc
いいえ、そうではないです。デフォルトでパッケージの可視性があります。
アクセスは(err ...)デフォルトアクセスデフォルトです。 パッケージプライベートとも呼ばれます。考えてみてください。デフォルトでpublic
だった場合、コンストラクターがpublic
ではなく、実際にはパッケージがプライベートであったことをどのように示しますか?それを示すためのパッケージprivateに対応するキーワードはありません。
コンストラクターの宣言でアクセス修飾子を使用して、他のどのクラスがコンストラクターを呼び出すことができるかを制御できます。 コンストラクターをパブリックとして明示的に宣言しない場合、コンストラクターは宣言されたのと同じパッケージでのみ表示されます(パッケージアクセス)。
アクセス修飾子を記述しない場合、デフォルトに設定されます。これは、パッケージがプライベートであることを意味します。例えば。パッケージ外のクラスはアクセスできません。
いいえ。デフォルトのアクセス指定子があります。つまり、パッケージの可視性があります。
クラスでは、アクセス修飾子のないすべてのメソッドにパッケージの可視性があります。ただし、インターフェイスでは、メソッドは常に公開されています。