【发布时间】:2022-11-10 05:12:01
【问题描述】:
我想问你为什么在这种情况下使用@Override会产生错误“Method does not override method from its superclass”?为什么我不能使用实现接口的类的实例作为参数并返回由同一接口定义的方法的类型?
public interface Request {
//....
}
public interface Response {
//....
}
public class MyRequest implements Request {
//....
}
public class MyResponse implements Response {
//....
}
public interface Order {
Response cancel(Request request);
}
public class MyOrder implements Order {
@Override
public MyResponse cancel(MyRequest request) {
return null;
}
}
【问题讨论】:
-
返回
MyResponse可以,但只接受MyRequest则不行:如果您将变量称为Order o = new MyOrder();,您会期望o.cancel(r)能够处理任何Request r,不仅仅是MyRequest。但是,返回值仅为MyResponse是可以的:它始终是Response。