接口怎么成值类型了?真是不可思议……
接口就是一组供继承者实现的契约。在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
但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
你知道接口只是一个约束就可以了.再到百度查一下接口与抽象类的区别..你就明白了
接口,如果继承了就必须实现接口里面有的成员,接口可以有多个继承
抽象类,里面可以包含抽象的方法,不能直接使用,需要用到时一定需要继承