-2

抽象クラスにプライベートコンストラクタを含めるための実行可能な解決策はありますか?アドバイスしてください

public abstract class BaseClass
{
    private String member;

    private BaseClass(String member)
    {
        this.member = member;
    }

    ... abstract methods...
}
4

2 に答える 2

2

これは、抽象クラスの目的を無効にします。

  1. 抽象クラスを使用するには、サブクラス化する必要があります。

  2. メソッドがプライベートの場合、サブクラスはそれを見ることができません。

∴事実上到達不能です。

だから、いや。


編集@yshavitは、このロジックに非常に真実な穴を見つけました-彼のコメントを見てください(おそらく質問への答えになるはずですか?)。

于 2012-08-11T04:37:04.220 に答える
2

抽象クラスはプライベートコンストラクターを持つことができます。ただし、そのクラスを別のクラスで拡張することはできません。抽象クラス内に静的内部クラスを追加して、その抽象クラスを拡張する代わりに。

 abstract class  Base{
public abstract void set();

private Base(){
System.out.println("Private Constructor!");
}
static class Derived extends Base{
public void set(){
System.out.println("set() method implemented!");
}
}
public static void main(String[] args){
new Base.Derived().set();
}
}
于 2012-08-11T05:07:54.713 に答える