我想我很驚訝地發現Implements
或<Serializable()>
沒有從類繼承到類,這意味着它必須重新定義每個我想重新創建這些行爲。我想知道在.Net中還有什麼是不可以的?謝謝什麼不能在.Net中繼承?
回答
這些是2個不同的項目:接口和屬性繼承。
Inherits
部分引用了接口如何在類層次結構中行爲。接口確實是繼承的。如果一個給定的基類實現IFactory
那麼它的所有派生類型都會。關於派生類如何重新實現接口或特定方法,存在某些語言上的古怪之處。然而,在.Net級別,一旦基類實現了一個接口,所有的派生類也將如此。
屬性是否被繼承取決於給定屬性的AttributeUsage
上的值AttributeUsage.Inherited
。在Serializable
的情況下,它被標記爲Inherits=false
,並且不會被繼承。每個屬性都必須在這裏選擇自己的行爲。
長答案將花費太長時間,但簡短答案是使用sealed
(c#)或NotInheritable
(VB.NET)修飾符的任何類。
http://msdn.microsoft.com/en-us/library/88c54tsw%28v=vs.71%29.aspx
您是否正在艱難地決定哪個答案是正確的? –
我的appologies。接受按鈕並不總是適用於我,並且實際上向meta.serverfault.com提交了一個錯誤。試圖將問題重現爲其命中和錯過。我刷新了50次頁面,只有三分之一的時間可以在不同的答案之間切換。有時它根本不接受,有時只接受一次,但不再切換。 http://meta.serverfault.com/questions/2135/accept-button-does-not-work-all-the-time –
- 1. 什麼類型的類不能在.NET中繼承?
- 2. 爲什麼不能從接口繼承
- 3. 爲什麼我不能繼承datetime.date?
- 4. 爲什麼我不能繼承IO.Directory?
- 5. 爲什麼不能繼承SqlDataReader類?
- 6. 爲什麼在java中不可能存在多重繼承
- 7. 爲什麼你不能在c#中做多重繼承?
- 8. 多重繼承不能在C#中支持。爲什麼?
- 9. 爲什麼我不能在繼承中使用BASE
- 10. 爲什麼我不能在python3中繼承元組?
- 11. UML - 類繼承,你繼承了什麼?
- 12. LinkedList ...繼承...什麼?
- 13. protobuf-net繼承
- 14. 原型繼承爲什麼子對象不能從父對象繼承方法?
- 15. 在Maven項目中繼承什麼
- 16. RewriteOptions在htaccess文件中繼承什麼?
- 17. 爲什麼在CSS中沒有繼承
- 18. VB.net不能繼承
- 19. 不能繼承父
- 20. 不能繼承UIColor?
- 21. .net 4.0繼承.net 3.5 web.config?
- 22. 爲什麼一個結構允許接口繼承,爲什麼一個類不能繼承
- 23. 爲什麼babel在繼承Object.create(superClass.prototype)時使用setProtoTypeOf來繼承?
- 24. 爲什麼java不支持多繼承?
- 25. 爲什麼Java不支持多繼承?
- 26. 爲什麼FormatException不會從ArgumentException繼承?
- 27. 爲什麼C#不支持多繼承?
- 28. 爲什麼C不支持繼承?
- 29. 爲什麼不從ifstream繼承
- 30. 爲什麼vb.net不支持多繼承?
MHH,你知道這事呢?我沒有注意到這個奇怪的行爲 –
不,接口實現絕對得到繼承。屬性可以自動使用AttributeUsage,也可以通過僅搜索屬性的基類來手動完成。也許私人會員是一個更好的例子。他們得到繼承,但你不能使用它們。不妨稱之爲「不能繼承」。 –
好吧,所以我有一個基類A實現接口IA,IA已經聲明瞭方法Do作爲定義的方法。如果B類繼承A,並且B類試圖實現IA.Do,編譯器會抱怨「接口'IA'沒有被這個類實現」。這是否意味着B類也實現了IA,因爲它可以將IA.Do方法與B結合?這是我得到原始問題基礎的地方。 –