根据Joshu的有效Java,“只提供静态工厂方法的主要缺点是没有公共或受保护构造函数的类不能被子类化。”谁能解释一下这是什么意思吗?尤其是黑体字。如果提供或不提供静态工厂方法,则不能对带有私有构造函数的类进行子类划分,对吗?
发布于 2015-06-21 09:44:06
只提供静态工厂方法的是,没有公共或受保护构造函数的类不能被子类化。
每当调用子类的构造函数时,父类的构造函数也会被调用。在没有受保护的或公共的构造函数的情况下,对类进行子类分类或扩展类是没有意义的。因此,不利因素。
发布于 2015-06-21 09:51:26
Java需要派生类,以确保继承的字段将正确初始化。它是通过在构造函数开始时调用超类的构造函数来完成的。
这样的代码应该看起来像
class Derived class Parent{
public Derived(){
super();//this will be added automatically by compiler
//or super(arguments) if you want to use constructor with arguments
}
}但是,如果超类没有使其构造函数可访问(它是女贞),派生类就不能在其任何构造函数中添加super调用。这意味着我们不能为构造函数创建有效的代码,而且由于所有类都必须至少有一个构造函数,所以派生类无法编译。
https://stackoverflow.com/questions/30963154
复制相似问题