我有一个愚蠢的疑问,但我想听听一些关于它的意见。
我有一个父类(super class) (MySuperClass),然后,我有大约 70 个类继承自这个父类(super class)(Bean 类)。
这个父类(super class)的目的是使用反射实现“toString”方法,通过这种方式,我确保所有这 70 个类都具有 toString 方法。这 70 个类是 bean,最终目的是记录类信息,而不仅仅是类的实例。
但是,这不是我想讨论的,我想听听您对父类(super class)有一个 protected 构造函数有什么看法,这样做的好处和坏处,而不仅仅是针对这种特殊情况但对于您可以想象的其他情况或场景。
问候,
铁
最佳答案
如果您的目标是确保 MySuperClass
永远不会通过 new MySuperClass()
直接实例化,只有它的子类是,那么声明类 摘要
;见http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html .这就是抽象类的真正意义所在。构造函数可以是 public
或 protected
,这并不重要。
在非-抽象
类中让所有构造函数 protected
的原因是,如果您确实打算使用 new MySuperClass()
实例化类本身,但只希望它被 子类和它的包的其他成员实例化(例如“工厂”对象) .不过,这听起来不像您想要做的。
关于java - 创建类的 protected 构造函数的优点和缺点是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8619301/