接口类型是否继承于System.Object的讨论?
2009-02-12 12:59
260 查看
由于最近比较忙,好久没有来这里写东西了,以后会常常来这里记录一些自己的心得和体会的。
看到标题可能很多人也会比较疑惑,认为这个根本没有必要讨论,而且认为这个问题也比较无聊。
实际上我也是今天才注意到这个问题的,不知道大家想过这个问题没有?
我一开始遇到这个问题是一个初学编程的同行提出的,他的想法是借口类型似乎应该继承于System.Object,毕竟System.Object是所有.NET中所有类型的根类型。
实际上仔细考虑一下以上看法就占不住脚 ,从接口的定义就可以看出这一点:接口是描述可属于任何类或结构的一组相关行为。
这个概念的意思是接口只是关于一组行为的抽象描述,本身并不包括这些行为的实现,如果他继承与任何实体的类型,那接口就包括具体的一些实现了,也就是说假如借口继承于System.Object,那么每个借口就应该包括了System.Object中的GetHashCode(),GetType(),ToString()等方法的实现了,这和接口的定义存在矛盾,也不符合接口的设计理念。
说了这么多就是想给初学者提个醒,编程这门技术有时是需要多加思考的,仔细思考一些事情背后的原理,这样才能更快的提高自己的水平。
结论:实际上接口类型并不继承也任何System.Object的派生类,也不继承于System.Object
看到标题可能很多人也会比较疑惑,认为这个根本没有必要讨论,而且认为这个问题也比较无聊。
实际上我也是今天才注意到这个问题的,不知道大家想过这个问题没有?
我一开始遇到这个问题是一个初学编程的同行提出的,他的想法是借口类型似乎应该继承于System.Object,毕竟System.Object是所有.NET中所有类型的根类型。
实际上仔细考虑一下以上看法就占不住脚 ,从接口的定义就可以看出这一点:接口是描述可属于任何类或结构的一组相关行为。
这个概念的意思是接口只是关于一组行为的抽象描述,本身并不包括这些行为的实现,如果他继承与任何实体的类型,那接口就包括具体的一些实现了,也就是说假如借口继承于System.Object,那么每个借口就应该包括了System.Object中的GetHashCode(),GetType(),ToString()等方法的实现了,这和接口的定义存在矛盾,也不符合接口的设计理念。
说了这么多就是想给初学者提个醒,编程这门技术有时是需要多加思考的,仔细思考一些事情背后的原理,这样才能更快的提高自己的水平。
结论:实际上接口类型并不继承也任何System.Object的派生类,也不继承于System.Object
相关文章推荐
- 是否存在不继承自System.Object类型的类
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.VisualStudio.Tools.Applications.Runtime.IHostServiceProvider”
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.VisualStudio.Tools.Applications.Runtime.IHostS
- 接口继承自System.Object吗?
- C#WPF无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“System.Speech.Internal.SapiInterop.ISpDataKey”。解决办法
- List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是。 Collection是最基本的集合接口,一个Collection代表一组Object,即Colle
- OPC客户端调用时提示“无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型”...
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.VisualStudio.OLE.Interop.IServiceProvider”。
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类
- 黑马程序员----继承2(接口、多态、object)
- ASP.NET#命名空间"System.Data"中不存在类型或命名空间名称"Linq"(是否缺少程序集引用?)
- 匿名内部类是否可以继承其它类,是否可以实现接口?
- 找不到编译动态表达式所需的一种或多种类型。是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用?
- 匿名内部类 是否可以继承其它类,是否可以实接口
- 声明一个Object对象,然后强制转换成Dog类型并判断是否转换成功。
- (转) CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)
- Anonymous Inner Class (匿名内部类)是否可以继承其他类,是否可以实现接口?
- 基本类型--接口(一、您了解接口继承吗?)
- 关于接口继承与覆盖基接口成员的讨论
- Java - 接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?