我无法使用抽象方法创建具体类的原因是什么?
是否强制执行只是为了确保没有抽象方法定义就没有创建对象?还是有另一个合理的理由来限制这个限制?
答案 0 :(得分:1)
根据定义,abstract
类是不完整的。因此,您不应该能够实例化abstract
类。这个定义的一个有趣的副作用是你可以创建具有所有具体方法的abstract
类。只是你认为你的课程是不完整的,不应该被实例化。
答案 1 :(得分:0)
abstract
类定义为该类至少有一个
abstract
方法。而抽象方法只是一种未实现的方法。这是一个刚刚从c ++复制的设计决策,它完全相同。唯一的区别是,在c ++中你不需要告诉编译器一个类是抽象的,即使没有你告诉它,编译器也会知道它。为什么这个设计决定是用c ++做的,我不能告诉你,但是让它决定了一整套错误。当该方法未在该子类中实现时,调用类方法的错误。
答案 2 :(得分:0)
你是对的,原因是为了防止创建一个没有实现方法或更多的对象。
答案 3 :(得分:0)
因为当您创建Abstract类时,您处于抽象级别的中间。我的意思是你对课堂责任有一些疑问,或者这个班级必须做些什么,但他们不关心如何,部分。如果您不想要实现的方法,则必须创建一个接口。 在我看来,答案在于阶级责任和抽象,而不在技术范围内。