我正在处理一些需要将超类或子类对象发送到方法的代码。
该方法public void repair(Vehicle vehicle)
将仅访问超类对象中的方法。
public class Vehicle {
//class stuff
}
public class Car extends Vehicle {
//class stuff
}
public static void main(String[] args)
{
// do stuff to determine whether working with a vehicle or car
if (someCondition)
{
Car = new Car();
// do some stuff...
repair(Car);
}
else
{
Vehicle = new Vehicle();
// do some stuff...
repair(Vehicle);
}
}
我想我有三个选择:
- 保留代码原样,它似乎正在工作。- 我不喜欢这个选项,感觉就像我在做假设,我怀疑只有汽车的方法可能会被意外调用,从而导致意外行为。
- 在 car 中创建一个 getVehicle() 方法,以返回一个 Vehicle。然后用
repair(Car.getVehicle());
——这个感觉好一点 - 我相信改变
Car = new Car();
它Vehicle = new Car();
会创建一个只能执行车辆类型方法的对象(车辆)。- 这感觉是最安全的,因为我现在正在限制可以做的事情,以防止意外行为。
考虑到维修方法只期待车辆,3,最好的方法是什么?
另外,我可以/应该对public void repair(Vehicle vehicle)
方法声明做些什么吗?
编辑:看来我应该使用:
保留代码原样
因为该repair()
方法无论如何都会将子类对象转换为超类对象。