【发布时间】:2018-09-08 19:40:53
【问题描述】:
我有两个接口:
interface S {
public String m1();
}
interface O {
public Object m1();
}
我决定在一个类 Test 中同时实现 O 和 S :
class Test implements O, S {
}
我的问题:
为什么我必须只实现 public String m1() 方法而不是其他方法?
其次,为什么我不能实现public Object m1() 而不是public String m1()?
【问题讨论】:
-
我找到了一个可能有帮助的答案。 stackoverflow.com/questions/1882584/…
-
一个接口就是一个promise。返回
String实现了返回Object的承诺,但反之则不然。 -
假设您的测试被允许实现
public Object get(){...},并且在该方法中您return new Person("Adam"); }(Person 扩展了 Object,因此它是这种方法的可接受结果)。现在想象在其他地方有像method(S s){ String value = s.get(); }这样的方法。所以它需要S,所以我们可以传递Test实例,因为它实现了S。但是在String value = s.get();而不是预期的String我们得到了Person。这样可以吗?
标签: java