1

重複の可能性:
クラスでコンストラクターをプライベートにすることの用途は何ですか?

プライベート コンストラクターを使用すると便利な場合 保護されたものはどうですか?

4

3 に答える 3

5

静的ファクトリ クラス、シングルトンなどのオブジェクトの外部インスタンス化を防止したい場合に便利です。

于 2013-02-05T22:02:06.907 に答える
1

のいくつかの用途を考えることができますprivate

  • 外部インスタンス化を防止する (完全に静的なクラスまたはシングルトン)
  • クラスをインスタンス化するためにデフォルトのコンストラクターが必要になることがありますが (例: Hibernate )、それらを公開したくない場合があります。
  • コンストラクターの委任

最後の完全に不自然な例:

private MyClass(int a) {
    this.a = a}

public MyClass(int a, String B) {
    this(a);
    this.b = b;
}

public MyClass(int a, double c) {
    this(a);
    this.b = Double.toString(c);
}

と同様の理由でprotected、特権のある少数をサブクラスとパッケージの隣人に拡張するだけです。

于 2013-02-05T22:06:05.303 に答える
1

シングルトン パターンでは、プライベート コンストラクターを使用してオブジェクトのインスタンス化を制御します。遭遇する可能性のある別のユース ケースは、単体テストで使用される特別なコンストラクターが必要な場合です (依存性注入フレームワークなしで単体テストを実行する場合)。そのため、それを公開するのではなく、パッケージを保護し、単体テストを宣言します。同じパッケージ。

于 2013-02-05T22:06:12.377 に答える