日期:2014-05-19  浏览次数:20490 次

问一个非常弱智的问题(接口的问题)
系统的接口都是没有实现的方法
那为什么要继承它   再实现方法?
为什么不直接写出方法用那?
解决了什么问题


------解决方案--------------------
关注中。。。。
------解决方案--------------------
接口完全可以顾名思义。例如“用户”类型拥有“资源管理器处理对象”接口,“礼品”类型也拥有它,“设计”类型也拥有它,但是“代码”类型不具有,那么前三个的集合就能够被资源管理器直接管理,而最后一个就不行。

由于.net不支持多重继承,接口是救命稻草,可以用来模拟同样的功能(尽管要写很多代码不得不手写)。
------解决方案--------------------
这个是历史使然。对于微软来说,在COM时代靠十几年在各种项目之间推行统一接口技术使得项目开发组之间事半功倍地共享成果,获得了巨大的成功。其实我认为微软在80年代初期就谙熟接口技术,只是自己在研发没有当作什么“模式”而已。COM使得微软的各种开发工具做出的组件在Windows系统下都可以协作,符合COM标准的组件基本上可以跨语言相互调用。例如使用VB写的COM组件就一度成为asp服务器端在asp解释环境下实现企业业务逻辑的主要工具。微软的Office里边各种产品的COM类库相当强。

与微软同时代的几个主要框架体系,也是接口为主的。COM+没有能够取得同样的地位,微软就顺应潮流放弃 COM 而设计出 .Net框架了。在.Net框架下,你可以仔细看,到底是继承还是Interface占据主要地位。但是由于class尚不具有多重继承功能,Interface还是有一席之地的。

范型缓解了Interface带来的编程混乱,使得很多时候可以用类型而不是Interface来说明概念。

------解决方案--------------------
接口就是定义方法 下面的类去完成 他自己实现了 下面怎么去实现呢~~~他的方法可以有多个类去实现 这样可以同意方法名称 用起来比较方便
------解决方案--------------------
接口就像模具,就像一套规范,只要知道类是继承哪个接口的,不需要知道具体方法的实现,外部就可以调用
------解决方案--------------------
系统提供的接口告诉我们要完成一定的功能必须提供的方法
如支持foreach语句的类需要实现IEnumberable接口
------解决方案--------------------
举一个接口的设计问题的很明显的例子:

foreach(房子 x in 中国的房子())
Console.WriteLine(x.建筑面积);

过去有许多系统使用一个IEnumerable类型的集合“中国的房子()”作为结果。实际上返回的对象是不是“房子”只有运行时才知道,编译时无法保证类型正确,也就无法发现设计错误。

如果专为在.Net2.0以后的程序设计,就应该使用“IEnumerable <房子> ”来强化设计集合函数时的类型了。
------解决方案--------------------
前些天又一个问题,大致是问:

class 房子:财产,I房子
{
.....
}

程序中是:

房子 a=new 房子();
......
I房子 b=a;
......
财产 x=(财产)b;

看程序第三句,其实非常不可靠,编译器此时根本不给你做可靠的类型检查。如果你将“房子”不是从财产继承的,编译器根本检查不出设计问题。

我说没办法,Interface就是这个德性,除非你用上范型。
------解决方案--------------------
楼上说的即是。。。
------解决方案--------------------
关注!!