2012-12-08 97 views

回答

5

即使將對象的運行時類型分配給靜態類型爲接口Measurable的變量,該對象的運行時類型仍爲Motor。類型定義了行爲,而接口定義了可以在沒有強制轉換的情況下調用哪些方法。

+0

你的答案不明確。這是什麼? 「採用'Motor'的人會被調用,」(錯誤的)或「第一個超載會被調用」(右)? – erickson

+1

錯了。你爲什麼不嘗試它? 'foo(Measurable)'重載是在編譯時根據參數的引用類型選擇的。請參見[JLS,8.4.9,](http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.4.9),它表示「在編譯時使用實際參數(以及任何顯式類型參數)和參數的編譯時類型來確定將被調用的方法的簽名......「。 – erickson

+1

@erickson你說得對,我對最具體的方法選擇過程感到困惑。我想我已經離開Java太久了:( – dasblinkenlight

2

這是一個汽車的對象,因爲你實例化一個實現該接口可測

你不能實例化一個類型衡量,因爲接口不能被實例化一個新的汽車()對象。接口告訴實現此接口的對象將能夠執行x動作

1

它是一類電機和接口可測量。兩者都是不同的類型,因爲
Interfaces和Classes的分離是Java給出多重繼承的印象的方式,儘管Interface的實現僅指定契約。

相關問題