OOP:拥有大量继承类是正常的吗?

时间:2012-06-15 23:29:17

标签: class methods

我开始为2D游戏编写一些代码,创建了一个类“objets”,试图尽可能保持通用。我有一些方法和属性,每种元素(buldings,ppl,界面按钮等)都很常见,比如(w,h,x,y ......你知道),但大多数只在应用时才有意义和特定类型的项目。 所以我必须为游戏中的每种类型的演员继承一个新类? 只是想知道这是否是一种常见做法,或者我应该以不同的方式管理它。

提前致谢。

3 个答案:

答案 0 :(得分:1)

如果你正在引入行为然后是子类,但是如果差异是基于属性的话,那就不要了。

动物(有.colour和.makeSound) - >狗(有.eatOwnPoop) - > RedDog(不,太具体,颜色覆盖)

注意我在Animal中的“.makeSound”。我本可以把.bark放在狗身上,但是我必须把.meow放进猫等等。子类可以简单地覆盖并提供一个具体的声音。

但是,您可以使用接口来更好地交叉代码,但这是一个相当冗长的主题,并且可能对您的需求有些过分(尽管它可以帮助您进行任何单元测试)。

答案 1 :(得分:1)

听起来你过度使用了继承。当你同时说“像...这样的共同属性”和“......只有在适用于特定类型时才有意义”时,这肯定是一个红旗。此外,如building等域对象与button等接口对象共享公共基类,这是一个红旗。最后,定义您自己的objetobject?)类是非常不寻常的,系统中的每个类都派生自该类。这不是不可思议的,但结合你的其他评论,听起来你已经开始走上了一条没有生产力的道路。

您可能想参考一个关于面向对象设计和分析的好教程,例如“Head First OOA&D

答案 2 :(得分:0)

你无需做任何事情。通常,如果派生类表现出某种共性,但在每个级别的继承需要特定功能的本质上变得更加专业化,则使用派生类很有用。如果您想要具有多态行为,也可以使用它。你问了一个非常开放的问题,但基本上不觉得你必须使用继承,因为不是每个问题都需要它,而且确实有些人过度使用继承,在不需要它的地方引入它。总而言之,我真的建议如果您还没有读过面向对象设计的好书,那么这将让您从不同的角度思考您的代码并大大改进您查看软件和设计的方式它。这可能听起来像个警察,但如果不知道你正在做什么的所有细节,这个问题很难回答。