请教:父类中若是定义构造函数为private,是不是在子类中均无法再重载或扩展?
我在父类中定义了构造函数为private PrintSpooler() throws SingletonException,但在子类中想增加public PrintSpoolerChild(String n) throws SingletonException构造函数都不能,父类中并没有定义这个函数,不知道是怎么回事。后来在父类中增加了带参数的构造函数仍是不行,提示“PrintSpoolerChild.java can't be applied to()”
具体代码如下,比较简单,请指教,谢谢!
//父类代码
package Employee;
import Employee.SingletonException;
class PrintSpooler {
private static boolean instance_flag=false;
private static PrintSpooler ps=null;
//构造函数1
private PrintSpooler() throws SingletonException {}
//构造函数2
public PrintSpooler(String n) throws SingletonException {
// TODO: Add your code here
String strName=new String(n);
}
...
}
//子类代码
package Employee;
import Employee.PrintSpooler;
class PrintSpoolerChild extends PrintSpooler {
//问题出在这里???
public PrintSpoolerChild(String n) throws SingletonException{
// TODO: Add your code here
String strName=new String(n);
}
...
}
问题点数:30、回复次数:10Top
1 楼kingfish(工作很忙,很少来csdn...)回复于 2004-09-02 10:09:18 得分 0
既然要继承,为什么父类用private构造函数?
奇怪Top
2 楼lixiang823517(泥浆)回复于 2004-09-02 10:18:29 得分 0
可以使用protected
继承对象可以使用父类中的protected,但是构造函数不建议这么使用,还是public 或者default比较合适吧Top
3 楼zengshengbo(喜爱)回复于 2004-09-02 10:36:32 得分 0
其实这是一个单例模式,我希望能够有较好的扩展性和安全性,因此不能不让它被继承。Top
4 楼itview(可以包含中文字符,不能用于登录)回复于 2004-09-02 10:49:01 得分 0
既是要继承 为什么还要用private
可以使用protectedTop
5 楼kingfish(工作很忙,很少来csdn...)回复于 2004-09-02 10:59:59 得分 0
子类要调用父类的构造函数,
父类:singleton,构造为private,
子类无权调用。
Top
6 楼zengshengbo(喜爱)回复于 2004-09-02 11:12:06 得分 0
问题就在这里,我希望能够让子类继承,但是不想子类通过对构造函数的重载进行任意修改,以造成产生多个实例的情况(恶意代码)Top
7 楼MaxMarvel(我是一只小小,小,小,鸟)回复于 2004-09-02 11:22:06 得分 0
挺怪的,哈.Top
8 楼kingfish(工作很忙,很少来csdn...)回复于 2004-09-02 11:29:37 得分 0
前后矛盾,不可能Top
9 楼flyxxxxx()回复于 2004-09-02 11:45:15 得分 0
public class PrintSpooler
{
protected static _PrintSpooler ps;
public PrintSpooler(){
ps=new _PrintSpooler();
}
final public class _PrintSpooler{
private _PrintSpooler(){
}
public void print(){
}
}
}
class PrintSpoolerChild extends PrintSpooler{
public PrintSpoolerChild(){
}
}
PrintSpooler是可以继承的,重载它的方法调用_PrintSpooler类的内部参数
用公开的不可继承的内部类_PrintSpooler作为一个单一实例,因此它不可能通过PrintSpooler的子类重新实例化应该达到了你的要求吧Top
10 楼ntzls()回复于 2004-09-02 12:40:20 得分 30
super(n);Top




