繁体   English   中英

私有构造函数和继承(Java)

[英]Private constructor and inheritance (Java)

我有第一个类,构造函数接受一个参数。

public class First {
    First(Object o){
        o.toString();
    }
}

我有第二个课程,它扩展了第一个课程。

public class Second extends First {
    Second(Object o) {
        super(o);
    }
}

我想要的是保持Second类私有的构造函数,以便有可能实例化该类的唯一一个实例例如,使用Singleton模式),但编译器不允许我这样做。

如果我不能在这里将构造函数设置为私有,我该怎么做才能允许创建该类的唯一一个实例?

你可以使Second个私有的构造函数没有问题。 除非使用嵌套类,否则不能做的是First private的构造函数。

举个例子,这很好用:

class First {
    First(Object o) {
        o.toString();
    }
}

class Second extends First {
    private final static Second instance = new Second(new Object());

    private Second(Object o) {
        super(o);
    }

    public static Second getInstance() {
        return instance;
    }    
}

这是工作!!

class First {
    First(Object o){
        o.toString();
    }

   public First() {//I think you missed this
   }
}
class Second extends First {
  private static Second obj ;
    private Second(Object o) {
        super(o);
  }

  private Second() {

  }

    public static Second getInstance(){
        if(obj == null){
            obj = new Second(new Object());
        }
        return obj;
    }


}
public class SingleTon {
    public static void main(String[] args) {
        Second sObj = Second.getInstance();
    }
}
public class Second extends First{
    private static final Second instance = new Second(new Object());
    private Second(Object o) {
    super(o);
    }
    public static Second instance(){
    return instance;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM