即使所有方法都具有默认实现,也有可能这些实现在应用程序上下文中实际上没有 意义
。这些方法可能仅进行内部记账,而实际有用的实现必须由派生类提供,该派生类将执行其需要执行的操作,然后调用超类方法。
但是,这仅仅是猜测。您将必须显示一个实际示例来说明这种设计的原因。
例如,让我们以一个简单的游戏引擎为例。我的
GameObject游戏中有很多不同的地方。
有些是可见的,所以我的基本类有一个
draw()
方法。但是可能有一些看不见的对象(如触发器区域)根本不显示,因此我在基类中将其实现为无操作。有些人与某物碰撞时会做某事,因此每个人都有一个
collide(other)
方法。但是有些碰撞时就像纯粹的视觉粒子效果一样,什么也不做,因此我在基类中也提供了禁止操作的功能。有些人在每次游戏打勾时都会做一些事情,所以他们有
update()
办法。但是某些对象(例如墙)可能根本无法独自执行任何操作。因此,我也对此不提供任何操作。
那么,当我有一个不可见的对象,自己不做任何事情并且不与任何东西交互时,该怎么办?在游戏中没有理由。所以我做了基础课
abstract。 从理论上讲,
您可以实例化它,因为所有方法都有实现,但是 实际上 您没有理由这样做,并且当您尝试时,您会误解了我的游戏引擎的工作方式。



