接口类型是否继承于System.Object的讨论?
由于最近比较忙,好久没有来这里写东西了,以后会常常来这里记录一些自己的心得和体会的。
看到标题可能很多人也会比较疑惑,认为这个根本没有必要讨论,而且认为这个问题也比较无聊。
实际上我也是今天才注意到这个问题的,不知道大家想过这个问题没有?
我一开始遇到这个问题是一个初学编程的同行提出的,他的想法是借口类型似乎应该继承于System.Object,毕竟System.Object是所有.NET中所有类型的根类型。
实际上仔细考虑一下以上看法就占不住脚 ,从接口的定义就可以看出这一点:接口是描述可属于任何类或结构的一组相关行为。
这个概念的意思是接口只是关于一组行为的抽象描述,本身并不包括这些行为的实现,如果他继承与任何实体的类型,那接口就包括具体的一些实现了,也就是说假如借口继承于System.Object,那么每个借口就应该包括了System.Object中的GetHashCode(),GetType(),ToString()等方法的实现了,这和接口的定义存在矛盾,也不符合接口的设计理念。
说了这么多就是想给初学者提个醒,编程这门技术有时是需要多加思考的,仔细思考一些事情背后的原理,这样才能更快的提高自己的水平。
结论:实际上接口类型并不继承也任何System.Object的派生类,也不继承于System.Object