只是在玩界面,我有一个我无法真正理解的问题。
以下代码不运行,这是我期望的行为,因为接口方法要求该方法适用于任何对象,并且实现的方法已将签名更改为仅允许字符串对象。
interface I {
public void doSomething(Object x);
}
class MyType implements I {
public void doSomething(String x) {
System.out.println(x);
}
}
然而,使用下面的代码块,我很震惊地看到它确实有效。我认为它不起作用,因为我们期望返回一个对象,而实现的方法只会返回一个字符串对象。为什么会这样?这里传递参数和返回类型这两个原则有什么区别?
interface I {
public Object doSomething(String x);
}
class MyType implements I {
public String doSomething(String x) {
System.out.println(x);
return(x);
}
}