8

すべてのコンストラクターがプライベートとして宣言されているクラスがあるとします。

例えば。:

public class This {
    private This () { }

    public someMethod( ){
    // something here
    }
   // some more-- no other constructors
}

私の知る限り、すべてのコンストラクターを非公開にすることは、クラス「This」をfinalとして宣言することに似ているため、拡張できません。

しかし、私が受け取っている Eclipse メッセージは、これが可能であるという印象を私に与えています.all-constructors-private クラスは拡張可能です。これを見てください:

このクラスを次のようなもので拡張しようとすると

public class That extends This {
    ...
}

Eclipse で次のエラーが表示されます

独自のコンストラクターを定義する場合:

public class That extends This {
    That () {..} 
    ...
}

今回は、「暗黙のスーパーコンストラクター This() は、デフォルトのコンストラクターでは表示されません。別のコンストラクターを明示的に呼び出す必要があります。

これを回避する方法はありますか? すべてのコンストラクターがプライベートであるクラスを拡張する方法はありますか?

はいの場合、どのように?

いいえの場合、クラスが拡張されないようにすることの違いは何ですか?

注: Java のコンストラクターはプライベートにできますか? 他のいくつかの議論の中で。

4

3 に答える 3