這聽起來像一個愚蠢的問題,但它加重了我,因爲我不明白聲明方法的位置。在我的代碼,我可以做這樣的事情(這顯然是有點僞代碼)如何聲明返回的接口對象聲明其方法
ResultSet rs = DB.getConnection.sendSQL(select * from [table])
據我所知,SQL的發送返回「結果集」,雖然一個「結果集」只是一個接口返回對象實現了該接口。
我的問題是如何返回對象實現該接口?從我讀的界面只能定義一個方法簽名,而不是一個完整的函數。
那麼功能定義在哪裏?顯然不在ResultSet接口!我正確理解這是數據庫驅動程序的工作嗎? (我想我可能只是回答了我自己的問題)。
我可以使用全功能方法編寫接口嗎?任何實現類都會自動實現該方法,還是隻是通過調用「超級」或其他方法來覆蓋它?
我剛剛在SO How does abstract method of predefined interface like Connection, Statement etc. perform some task without having body? 上發現了這個問題,這是一個完美的重複,但很多bette制定。和一個很好的回答
我有點理解,我只是突然意識到,我正在從將SQL發送到數據庫的結果中獲取resultSet對象。所以我想知道在哪裏創建了ResultSet對象,以及接口是否能夠確定方法的某些功能。這也解釋了爲什麼經常有抽象類實現一個接口,所有的方法體都是「空的」。 – DaveM
@DaveM你沒有得到一個ResultSet對象,你得到一個對象,它是一個實現了ResultSet接口的類的實例。 –
所以實際上我得到了'對象的一部分'。所以我的被調用的對象可能有一個實現接口的成員,或者可能暗示它自己。如果被調用的對象實現了接口(也可能是其他的 - 這裏聲明對象可能實現metaData和結果集),當'實現接口的對象'被返回時,我想我只能訪問接口的那些方法,而不是任何其他人在被調用的類中,這是正確的。 – DaveM