java - 创建许多对象类型/类只是为了使用 instanceof

标签 java oop instanceof

我想知道我是否正在创建/将对象类型分解为无意义的类,是否有更好的方法来做到这一点。

假设我有以下类(class)(--> 扩展 更高的类(class)):

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 对象。

这样可以吗,还是有更好的方法?

最佳答案

首先,只要代码能正常运行并解决手头的任务,我就会说它足够“正确”(所以是的,没问题)。也就是说,有些人更喜欢使用接口(interface)而不是抽象类(因为您可以实现多个接口(interface),但只能直接从一个祖先扩展)。此外,如果您使用的是 Java 8+,则可以向接口(interface)添加 default 方法。其他替代方案可能包括拥有一个 Vehicle 类,但为 Vehicle 类提供一个 VehicleType enum 字段。

关于java - 创建许多对象类型/类只是为了使用 instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195462/

相关文章:

java - 类型变量 vs instanceof 用于识别

java - 使用 System.exit(0) 强制退出 Android 应用程序不起作用

java - 如何更改按钮事件Java的框架

javascript - 在其中一个原型(prototype)函数中调用 JavaScript 对象的构造函数是否正确?

php - 所有用户中显示用户注销

java - 避免强制转换和instanceOf

java - 将类作为参数传递给java中的方法

java - 卡夫卡1.0流媒体API : message consumption from partitions get delayed

java - 在 Java 中解析 XML 并忽略标签

javascript - 为什么 XML 不打算用作表示语言?