抽象クラスにプライベートコンストラクタを含めるための実行可能な解決策はありますか?アドバイスしてください
public abstract class BaseClass
{
private String member;
private BaseClass(String member)
{
this.member = member;
}
... abstract methods...
}
抽象クラスにプライベートコンストラクタを含めるための実行可能な解決策はありますか?アドバイスしてください
public abstract class BaseClass
{
private String member;
private BaseClass(String member)
{
this.member = member;
}
... abstract methods...
}
これは、抽象クラスの目的を無効にします。
抽象クラスを使用するには、サブクラス化する必要があります。
メソッドがプライベートの場合、サブクラスはそれを見ることができません。
∴事実上到達不能です。
だから、いや。
編集@yshavitは、このロジックに非常に真実な穴を見つけました-彼のコメントを見てください(おそらく質問への答えになるはずですか?)。
抽象クラスはプライベートコンストラクターを持つことができます。ただし、そのクラスを別のクラスで拡張することはできません。抽象クラス内に静的内部クラスを追加して、その抽象クラスを拡張する代わりに。
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();
}
}