Class OOP:有很多继承类是正常的吗?

Class OOP:有很多继承类是正常的吗?,class,methods,Class,Methods,我开始为一个2D游戏编写一些代码,创建了一个类“objets”,试图使它尽可能通用。我有一些方法和属性是每种元素(Buildings、ppl、interface buttons等)所共有的,比如(w、h、x、y…你知道),但大多数方法和属性只有在应用于特定类型的项目时才有意义。 所以我必须为游戏中每种类型的演员继承一个新类? 只是想知道这是否是一种常见的做法,或者我应该用另一种方式来管理它 提前感谢。如果您要引入行为,那么就引入子类,但是如果差异是基于属性的,那么就不要这样做 动物(has.co

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


提前感谢。

如果您要引入行为,那么就引入子类,但是如果差异是基于属性的,那么就不要这样做

动物(has.color和.makeSound)->狗(has.eatOwnPoop)->RedDog(不,太具体了,用颜色覆盖)

注意我是如何在动物中使用“.makeSound”的。我本可以在dog中放入.bark,但随后我必须在cat中放入.meow等。子类可以简单地重写并提供具体的声音


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

听起来您过度使用继承了。当您同时说“公共属性如…”和“…仅在应用于特定类型时才有意义”时,这无疑是一个危险信号。此外,域对象如
building
与接口对象如
button
共享一个公共基类也是一个危险信号。最后,定义自己的
objet
object
?)类是非常罕见的,系统中的每个类都是从该类派生的。这并不是不可想象的,但结合你的其他评论,听起来你已经走上了一条没有成效的道路


您可能想参考一本关于面向对象设计和分析的好教程,例如“”

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