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

Eug*_*ene 3 java

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

public class First {
    First(Object o){
        o.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

public class Second extends First {
    Second(Object o) {
        super(o);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*eet 8

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

举个例子,这很好用:

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;
    }    
}
Run Code Online (Sandbox Code Playgroud)