[英]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.