試圖瞭解一個問題,我在測試了錯誤:擴展對象VS實現接口
如何繼承從實現接口有什麼不同?
- 通過繼承,一個類從它的超類獲得行爲。
- 通過接口,類可以從它實現的接口獲得行爲。 (這是我選擇的)
- 繼承,一個類必須實現由它的超類定義的方法。
- 使用接口,類從它實現的接口獲得實例變量和行爲。
我在想的方式是接口定義了行爲,而超類定義了特性...或者它們是相同的嗎?或者我的理解完全倒退了?
編輯:我想我應該指定我做知道接口和繼承之間的區別。我只是想知道使用術語行爲的兩個選項。我不知道這位教授是否在挑剔術語,或者他提出的問題不好。
我知道當你實現一個接口時,你必須實現接口中定義的所有方法。因此,我想說接口定義了一個類必須具有的行爲,但是擴展了另一個超類(儘管它也定義了一些行爲(更多可以給予子類),但它似乎不適合如果這個類實現了一個接口,你可以確定它有某些行爲
也許問題的目的是詢問接口本身是否具有行爲的代碼,或者如果它只是定義 - 如果有這樣的話,我會知道答案
對不起,你的教授是這樣的一個傢伙......他/她正陷入語義學......這裏的訣竅是你的教授如何定義動詞「增益」。 – mre
我會說:1)是的。 (除非你重寫所有內容,並且永遠不要調用'super' - 假設超級構造函數沒有「行爲」)2)編號接口只定義了你需要的方法名稱。 3)否,除非是抽象類。 4)否,接口只定義方法名稱。 – zapl
這是一個真正的竅門嘿嘿。 – OmniOwl