首页 新闻 会员 周边

怎样用引用类型来理解接口

0
悬赏园豆:100 [已关闭问题]

初学接口的时候,老觉得接口只是一个未实现的方法,后来老拿接口跟抽象类进行比较,才把接口理解成类。问题又出现了,接口既然是一个类,那是什么类型的类呢?上次在网上看到了一篇文章,竟然说接口是值类型的,太不可思议了。。。

各位牛人,谁能帮忙解决

陈肇的主页 陈肇 | 初学一级 | 园豆:110
提问于:2009-08-07 10:54
< >
分享
其他回答(2)
0

接口怎么成值类型了?真是不可思议……

接口就是一组供继承者实现的契约。在IL中可以看到接口的标记为.class,即接口本质上是类。因此接口必然是引用类型。

参考anytao的两篇随笔,有助于你更好的理解接口:

http://www.cnblogs.com/anytao/archive/2007/04/12/must_net_02.html

http://www.cnblogs.com/anytao/archive/2009/03/05/must_net_27.html

麒麟.NET | 园豆:3614 (老鸟四级) | 2009-08-07 12:22
看了,多谢您的提示
支持(0) 反对(0) 陈肇 | 园豆:110 (初学一级) | 2009-08-11 19:45
0

但Interface不是“物”,是契约,是规则,是虚的思想,不是实实在在的"物“。类似万有引力定律一样,是抽象出来的思想,不能归为物体。
IObjectable obj = new MyObject(); 其实是实例化了一个继承自System.Object的具体对象,为啥?因为你用的是class MyObject。class关键字就表明了其肯定继承System.Object,是个实物。
而继承自IObjectable接口,仅仅是符合其契约和规则,符合协定的定律而已。照规矩办事,但规矩本身不是物,是抽象思维。
另外,interface关键字与class关键字代表的含义不同哦!你用class,默认继承System.Object。而用interface,你找不到System.Object痕迹。

这两篇文章很经典你看一下:

http://www.cnblogs.com/anytao/archive/2009/03/05/must_net_27.html

http://www.cnblogs.com/vivounicorn/archive/2009/07/15/1524060.html

winzheng | 园豆:8797 (大侠五级) | 2009-08-07 12:26
不错,学习了
支持(0) 反对(0) yearN | 园豆:551 (小虾三级) | 2009-08-09 11:17
看了,不错,收益颇深 也学了一句话:文章虽短,取一瓢饮之,畅也! 多谢!
支持(0) 反对(0) 陈肇 | 园豆:110 (初学一级) | 2009-08-11 19:52
0

你知道接口只是一个约束就可以了.再到百度查一下接口与抽象类的区别..你就明白了

接口,如果继承了就必须实现接口里面有的成员,接口可以有多个继承

抽象类,里面可以包含抽象的方法,不能直接使用,需要用到时一定需要继承

风浪 | 园豆:2996 (老鸟四级) | 2009-08-07 13:16
多谢关注!
支持(0) 反对(0) 陈肇 | 园豆:110 (初学一级) | 2009-08-11 19:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册