假设有一个类,其所有构造函数都声明为private。
例如。:
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 阻止类扩展之间有什么区别?
注意: 我看到Java中的构造函数可以私有吗?在其他一些讨论中。
具有私有构造函数的类只能被实例化,除非该类内部具有表单。这使它无法从其他类中扩展出来(可能,但不会编译)。
这并不意味着它根本不能被子类化,例如,在内部类中,您可以扩展并调用私有构造函数。