对不起,标题,还没说清楚。
我有以下结构:
public interface Vehicle {...}
public class Car implements Vehicle {...}
然后:
public abstract class Fixer {
...
abstract void fix(Vehicle vehicle);
...
}
并希望拥有:
public class CarFixer extends Fixer {
void fix(Car car) {...}
}
但这不起作用。 Eclipse说:
The type CarFixer must implement the inherited abstract method Fixer.fix(Vehicle)
。知道我该如何解决吗? 最佳答案
您可以使用泛型来解决此问题:
public abstract class Fixer<T extends Vehicle> {
abstract void fix(T vehicle);
}
public class CarFixer extends Fixer<Car> {
void fix(Car car) {...}
}
原始版本的问题在于
fix
方法允许任何类型的车辆,但是您的实现类仅允许车辆。考虑以下代码:Fixer fixer = new CarFixer();
fixer.fix(new Bike()); // <-- boom, `ClassCastException`, Bike is a vehicle but not a car
关于java - Java继承;将子类传递给父类(super class)的抽象方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23917156/