【发布时间】:2015-03-22 14:17:27
【问题描述】:
我想知道我是否将对象类型创建/分解为无意义的类,以及是否有更好的方法。
假设我有以下类(--> 扩展更高的类):
Vehicle class - takes care of movement and a default speed
-->Car class - adds passengers
-->-->ElectricCar class - a default constructor
-->-->GasolineCar class - a default constructor
-->-->HybridCar class - a default constructor
-->Motorcycle class - a default constructor
-->Bike class - a default constructor, overrides speed
-->Segway class - a default constructor, overrides speed
如您所见,它们大多是默认构造函数。所以我只在需要使用 instanceof 条件语句的情况下创建它们。我的大部分代码都在 Vehicle 类中,因为我试图避免在每个类中重复相同的代码。另外,我应该让 Vehicle abstract,对吗?我从不创建 Vehicle 对象。
这样可以吗?或者有更好的方法吗?
【问题讨论】:
-
我对您使用这些类的方式很感兴趣。
-
这完全取决于您将如何使用它们。到目前为止,您的结构没有任何问题。您不仅可以将它用于 instanceof,还可以用于诸如 boollean needsPetrol()... canHavePassengers() 之类的方法,您将在子类中实现这些方法,而不是使用 if instanceof 语句链。
-
你想做什么?
-
记住一件事,避免在代码中使用
instanceof。这就像要求第三方告诉你的类的结构,在这方面它是在询问编译器。而是在摩托车内部创建一个类似public boolean isMotercycle() {return true;}的函数,但在车辆类中,使用public boolean isMotercycle () {return false;}。这就像类本身提供有关自身的信息 -
我正在编写一个游戏,这些都是不同的游戏对象。当我进行碰撞检测时,根据碰撞中涉及的对象类型会发生不同的事情。这些不是确切的对象类型,但它是一个类似的示例。啊,感谢那头漂亮的牛,这很有道理。
标签: java oop instanceof