幾年前,我有一個關於OO的語言課程。 我忘記了這個聲明,並希望能夠幫助它恢復到內存。OO關於代理vs繼承與接口的基本問題
它是下列之一:
- 一切你可以與一個界面做的也可以委託做
- 你可以用一個接口所做的一切,也可以繼承做
- 您可以使用繼承進行的所有工作也可以通過接口完成
- 您可以使用繼承完成的所有工作也可以使用代理完成
我知道它的其中一個,而且1必然是完全無效的
請問您可以對此有所瞭解嗎?
幾年前,我有一個關於OO的語言課程。 我忘記了這個聲明,並希望能夠幫助它恢復到內存。OO關於代理vs繼承與接口的基本問題
它是下列之一:
我知道它的其中一個,而且1必然是完全無效的
請問您可以對此有所瞭解嗎?
我同意IAbstract - 委託與繼承或接口無關,所以我不認爲任何聲明都適用。
在我看來#2是正確的答案。一個接口提供了一組實現類必須包含的方法,屬性和事件。你可以通過繼承來得到這個默認值:所有超類的非私有屬性,方法和事件都可用於子類。
繼承爲子類提供實現細節(方法體),而接口不提供;它只提供給定課程中可用的內容。這就是爲什麼我不認爲#3是正確的。
好的,我遵循 - 有道理。這就是爲什麼我不喜歡用這種方式寫的測試問題。 – IAbstract
首先,代表真的沒有什麼關係的繼承或接口 - 所以我會排除這兩個1和4
其次,考慮的interface
是下列之一:
abstract class SomeInterface {
/*.. do stuff ..*/
}
...或
interface ISomeInterface {
/*.. do stuff ..*/
}
爲了有用,這些必須由一個具體的類繼承的地方向下的層次結構。通常,當派生一個類型時,你將有一個可以從中派生的接口的選擇。雖然我從來沒有聽過這種說法,但我會選擇#3 - 如果在多項選擇題上給出的話。
我假設他們提到'接口委託',而不是'.net'中使用的委託。 http://en.wikipedia.org/wiki/Delegation_pattern –
您已將問題標記爲C#,我可以回覆。但是,如何實現接口的代表,繼承和接口方式可能會有所不同,所以我不確定關於面向對象的抽象語句是多麼有用。
「一個可以通過委託來解決的問題也可以通過一個接口來解決。」 〜C#4.0簡而言之
MSDN programming guide interface vs delegate
當然,您可以通過接口做繼承一切你可以,但它可能會導致大量的冗餘代碼。因此,當C#缺少真正需要時,沒有多重繼承的好替代品。
任何可以用匯編語言編寫的高級語言都可以做到,但如果您關心的是生產力,那麼這可能沒有實際用處。
最有可能的是他們提到了「贊成組合比繼承」。在你的情況下,這將是聲明4.另一方面,接口傾向於很好地解決'多繼承'問題,並且是在測試用例中提供測試假人的強大工具。 –
很可能這是作業... –