0

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

提前致谢。

4

3 回答 3

1

如果您要引入行为然后是子类,但是如果差异是基于属性的,那么不要例如

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

请注意我在 Animal 中是如何使用“.makeSound”的。我本可以将 .bark 放在 dog 中,但是我必须将 .meow 放在 cat 等中。子类可以简单地覆盖并提供具体的声音。

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

于 2012-06-15T23:36:16.377 回答
1

听起来您正在过度使用继承。当你同时说“像......这样的常见属性”和“......仅在应用于特定类型时才有意义”时,这肯定是一个危险信号。此外,域对象(例如)building与接口对象(例如button. 最后,定义自己的objet( object?) 类是很不寻常的,系统中的每个类都派生自该类。这不是不可想象的,但是结合您的其他评论,听起来您已经开始了一条徒劳的道路。

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

于 2012-06-15T23:38:11.110 回答
0

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

于 2012-06-15T23:46:34.850 回答