【发布时间】:2013-09-02 14:42:53
【问题描述】:
假设有一个类,它的所有构造函数都声明为私有。
例如:
public class This {
private This () { }
public someMethod( ){
// something here
}
// some more-- no other constructors
}
据我所知,将所有构造函数设为私有类似于将“This”类声明为final——因此它不能被扩展。
但是,我收到的 Eclipse 消息给我的印象是这是可能的——可以扩展一个全构造函数私有类。看看这个:
当我尝试用类似的东西扩展这个类时
public class That extends This {
...
}
Eclipse 给我一个错误:“隐式超级构造函数 This() 对于默认构造函数不可见。 必须定义一个显式的构造函数。"
当我定义自己的构造函数时:
public class That extends This {
That () {..}
...
}
这一次我得到: "隐式超级构造函数 This() 对于默认构造函数是不可见的。 必须显式调用另一个构造函数。"
有没有办法解决这个问题——扩展一个所有构造函数都是私有的类?
如果是,怎么做?
如果不是,那么阻止一个类被扩展有什么区别 i.) 将其构造函数设为私有,并且 ii.) 将其定义为 final?
注意:我在其他一些讨论中看到了Can a constructor in Java be private?。
【问题讨论】:
标签: java eclipse constructor extending