Interface和Object的关系

    在.NET世界里,我们常常听到的一句话莫过于“System.Object是一切类型的根,是所有类型的父类”,以至于我在《你必须知道的.NET》8.1节 以“万物归宗:System.Object”这样的title为System.Object授予至高荣誉。所以,基于这样的观点就有了下面这句“接口是否也继承于System.Object?”,事实上这正是今天在技术群里小小讨论的一个插曲。

    以上摘自《你必须知道的.NET》作者Anytao的博文“[你必须知道的.NET]第二十七回:interface到底继承于object吗?”

    下面是我的理解:

万物归宗System.Object。但Interface不是“物”,是契约,是规则,是虚的思想,不是实实在在的"物“。类似万有引力定律一样,是抽象出来的思想,不能归为物体。
OK,IObjectable obj = new MyObject(); 其实是实例化了一个继承自System.Object的具体对象,为啥?因为你用的是class MyObject。class关键字就表明了其肯定继承System.Object,是个实物。
而继承自IObjectable接口,仅仅是符合其契约和规则,符合协定的定律而已。照规矩办事,但规矩本身不是物,是抽象思维。
另外,interface关键字与class关键字代表的含义不同哦!你用class,默认继承System.Object。而用interface,你找不到System.Object痕迹。
因此,这个结论很简单:interface本身不继承System.Object,但其具体的实现(因为使用class关键字)肯定继承System.Object,也就是楼主的结论2。
大家想想:数学定律,万有引力定律等等能算“物”么?还是这些是客观存在的但没有任务物体附属的规律呢?

 

    感觉自己回答的蛮好的。哈哈……记录一下。

posted @ 2009-06-14 21:24  primeli  阅读(1019)  评论(0编辑  收藏  举报