【发布时间】:2014-09-08 12:38:19
【问题描述】:
我正在学习JAVA,并在关注JAVA:The Complete Reference by Herbert Shildt这本书。
我学习了 Java 中的抽象类,但不明白这句话背后的原因:
抽象类不能直接用new操作符实例化。
我在 web 和 stackoverflow 上搜索并关注了这些问题:Why can't we instantiate a abstract class in JAVA? 和 Why can't we instantiate an interface or an abstract class in java without an anonymous class method?
在一个答案中,有人写道:
简单地说,在一个好的面向对象程序中,你永远不应该想要 实例化一个抽象类或接口。如果你这样做,设计是 可能是错的。
我不明白为什么不实例化抽象类对于良好的OOP 设计很重要。如果有人能给出一个很好的解释,那么请帮忙。
【问题讨论】:
-
@jhamon 我刚刚写了别人给出的答案。如果你能解释得很好,请写在答案中。
-
@jilt3d 编辑了问题。谢谢。
-
当你意识到你实际上可以为抽象类编写构造函数时,真正的关键就来了,即使编译器实际上不会让你使用它。
-
@JonK 它会让你从子类的构造函数中使用它。
-
@JonK 你能解释一下吗?请!
标签: java class oop design-patterns abstract-class