只是玩弄接口,我有一個我不能理解的東西的問題。Java - 接口方法
以下代碼不運行,這是我期望的行爲,因爲接口方法要求該方法適用於任何對象,並且實現的方法將簽名更改爲僅允許字符串對象。
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);
}
}
那麼這不是真的在這裏的答案。他的第一個例子具有相同的「演員」。第二次工作的原因由maress – keyser
解釋。他的第一個例子中沒有演員。該接口聲明一個將對象作爲參數的方法。有一個接受一個字符串的方法與獲取一個對象不一樣。你可以傳遞一個Integer到他的字符串方法,就像你可以使用一個接受Object的方法嗎? –
這更多的是一個答案,但還不是那裏:第 – keyser