我无法创建包含抽象方法的具体类的原因是什么?
是否只是为了确保没有抽象方法定义就不会创建任何对象?或者这个限制还有其他合理的理由吗?
abstract
根据定义,一个类是不完整的。因此,您不应该实例化abstract
类。这个定义的一个有趣的副作用是您可以创建abstract
具有所有具体方法的类。只是你认为你的类不完整,不应该被实例化。
abstract
java 上下文中的类被定义为该类至少有一个
abstract
方法。抽象方法只是未实现的方法。这是一个设计决策,它只是从 c++ 中复制而来,完全一样。唯一的区别是,在 c++ 中,您不需要告诉编译器一个类是抽象的,即使您不告诉编译器,编译器也知道它。为什么这个设计决定是用 c++ 做出的,我不能告诉你,但是拥有它可以消除一整类错误。当该方法未在该子类中实现时,调用该类的方法的错误。
因为当您创建抽象类时,您处于抽象级别的中间。我的意思是你对班级责任有一些疑问,或者这个班级必须做某事,但他们不关心如何,部分。如果你不想有一个实现的方法,你必须创建一个接口。在我看来,答案在于类职责和抽象,而不是技术范围。
你是对的,原因是为了防止创建一个没有实现方法或更多方法的对象。