クラス A があるとします。次の 2 つのアクセス修飾子のうち、コンストラクターの既定のアクセス修飾子はどれですか?
public A()
{
private A()
{
//some code....
}
protected A()
{
//some code....
}
}
クラス A があるとします。次の 2 つのアクセス修飾子のうち、コンストラクターの既定のアクセス修飾子はどれですか?
public A()
{
private A()
{
//some code....
}
protected A()
{
//some code....
}
}
これは、関数や変数の修飾子とまったく同じことを意味しますが、クラスのインスタンスを構築できる人を指すようになりました。
public
- コード内のどこからでもコンストラクターを呼び出すことができます。
private
- クラスの外部から構築することはできません - 通常、静的メンバー ファクトリ メソッドを使用してクラスをインスタンス化するユーザーを制御できるようにするために使用されます。ここにあるアプリケーションの良い例
protected
- 同様private
ですが、継承が含まれるようになりました - このコンストラクターを呼び出すことができるようになったため、任意のサブクラスのファクトリ メソッドを使用できます。
@dasblinkenlight が言及しているように、修飾子を指定しない場合、デフォルトでpackage-privateになります。つまり、パッケージ内のクラスにのみ表示されます。