【发布时间】:2020-08-17 09:54:01
【问题描述】:
我有几个类的方法完全相同
public class Car{
int goBrrr();
}
public class Bus{
int goBrrr();
}
等等
我需要用这些类的对象创建 ArrayList,并在循环中使用相同的方法
for (Vehicle vehicle: vehicleList{
vehicle.goBrrr();
}
类不能更改。
哪种解决方案更好: 使用所需的字段和方法创建新类并将其填充到构造函数中
public final class Vehicle{
int wheels;
String engine;
...
Vehicle (Car car) {...}
Vehicle (Truck truck) {...}
...
int goBrrr();
}
创建接口
interface Vehicle{
int goBrrr();
}
并扩展类
class ExtCar extends Car implement Vehicle{
@Override
int goBrrr();
}
class ExtBus extends Bus implement Vehicle{
@Override
int goBrrr();
}
或者也许有更好的解决方案?
【问题讨论】:
-
汽车和巴士不能延期,因为它们是最终的;因此最终选项不会编译
-
我的错,课程不是最终的。但我仍然无法改变它们。例如,我不能只添加工具。