抽象类似乎意味着该类的定义不完整,因此无法实例化。
我看到了一些简单的 Java 代码,其中有一个抽象类,其中定义了所有方法。然后我想知道,为什么他们将其作为抽象类而不是真正的类?他们这样做是为了让我们无法从这个抽象类实例化吗?或者他们从创建一个定义了所有内容的抽象类中获得了其他好处?
有可能即使所有方法都有默认实现,但这些实现实际上并不是有意义的在应用程序的上下文中。这些方法可能只进行内部簿记,而实际有用的实现必须由派生类提供,该派生类执行其需要执行的操作,然后调用超类方法。
然而,这只是猜测。您必须展示一个实际示例来说明这种设计的原因是什么。
作为一个例子,我们以一个简单的游戏引擎为例。我有很多不同的GameObject
在我的游戏中。
有些是可见的,所以我的基础课得到了draw()
方法。但可能存在根本不显示的触发区域等不可见对象,因此我在基类中将其实现为无操作。
有些人在与某物碰撞时会做某事,因此每个人都会得到一个collide(other)
方法。但有些碰撞时不会做任何事情,就像纯粹的视觉粒子效果一样,所以我还在基类中提供了一个无操作。
有些人每场比赛都会做一些事情,所以他们得到了update()
方法。但有些物体(例如墙)本身可能根本不起任何作用。所以我也为此提供了一个禁止操作。
那么,当我有一个不可见的对象,它本身不做任何事情并且不与任何东西交互时,我该怎么办?没有理由在游戏中出现这个。所以我做了这个基础课abstract
. 理论上你可以实例化它,因为所有方法都有一个实现,但是几乎你没有理由这样做,当你尝试时,你误解了我的游戏引擎的工作原理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)