Smo*_*ear 5 java oop instanceof
我想知道我是否正在创建/分解对象类型为无意义的类,以及是否有更好的方法来做到这一点.
假设我有以下类( - > 扩展更高级的类):
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
Run Code Online (Sandbox Code Playgroud)
如您所见,它们大多是默认构造函数.所以我只是创建它们以防我需要使用instanceof条件语句.我的大多数代码最终都在Vehicle类中,因为我试图避免在每个类中重复相同的代码.另外,我应该让汽车抽象,对吗?我从不创建一个Vehicle对象.
这样可以或有更好的方法吗?
首先,只要代码能够运行并解决手头的任务,我就会说它足够“正确”(所以是的,没关系)。话虽这么说,有些人更喜欢使用接口而不是抽象类(因为您可以实现多个接口,但只能直接从一个祖先扩展)。此外,如果您使用 Java 8+,您可以default向接口添加方法。其他替代方案可能包括拥有一个Vehicle类但VehicleType enum该类有一个字段Vehicle。