为什么要搞得这么复杂呢? 比如:声明一个接口,里面声明一些空函数;然后再生命一个类,并实现这个接口。在调用这个类里面的函数。为什么不直接在类里面声明方法呢?这样不是要少写一些代码么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 接口主要还是起到规范代码、多重继承的作用,对于以后维护来说也比较好,比如你定义了一个接口的类型和名称:string Ifunction,你只要把Ifunction这个接口丢给n个开发人员,让开发人员去写接口的功能(实现),这样你就可以不用管Ifunction里面的代码怎么样,你只要最终返回Ifunction的结果就行了,就看你Ifunction这个接口用在什么地方了。当然,接口也有缺点,一旦定义了接口的类型和名称,以后要修改就非常麻烦。接口只有大型项目还有多人一起开发才觉得有大的作用,平时小项目或者单独开发感觉就像多此一举一样,不过还是要养成一个习惯,一般都要写接口,方便以后别人接手 面向接口编程是oop的精华所在接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类至少要实现哪些功能,继承它的类可以增加自己的方法.使用接口可以使继承它的类: 命名统一/规范,易于维护.提供永远的接口。 当类增加时,现有接口方法能够满足继承类中的大多数方法,没必要重新给新类设计一组方法,也节省了代码,提高了开发效率. 好多代码其实都在无意思的误导了一些人,如果只有一个类,那么接口就完全没有必要。接口是给一组有一定关系的类,来使用的。接口不是为了少写点代码,而是为了调用的时候方便一点。举一个例子,提取控件值的例子。一个页面里有三个控件,一个文本框,一个下拉列表框,一个复选框。要取值怎么写?textbox1.Textdropdownlist.SelectedValuecheck1.checked每个控件的取值的函数(属性)都不大一样,如果定义一个接口(iControl),接口里定义一个取值的函数(GetValue),然后各个控件都实现这个接口。那么我们的取值代码就方便多了。for (int i = 0;i<Page.Controls.count;i++){iControl ctrl = Page.Controls[i];ctrl.GetValue;}这样不管有多少个控件,我们一个相同的循环就都搞定了。上面的代码只是一个含义,并不一定符合语法,先写的。 当然说它主要可以用于多重继承也是类似的,只不过表面看起来是另一个角度。比如我们有一个处理接口“I养马场”功能的程序,那么不论调用这些程序的时候其养马场对象实际上是自定义类型、Form、UserControl、MarshalByRefObject还是别的什么类型的子类,只要另外还有这个接口就行了。 不论什么都是从实际出发,所以肯定不能知道了接口概念就反过来滥用它。如果你定义了空洞的接口,那么使用它就成了负担,而且随便一个属性、一个方法都弄出一个借口来的话也就捧杀了接口的作用。比如空洞地搞个Value到处用,那么谁知道它到底具体起什么作用呢?一个DropdownList控件有不下5种我们关心的Value,所以只有那些直截了当地具体定义其不同属性的做法才会被人使用,而空洞地只是定一个一个Value属性则会被其它程序员抛弃。所以使用接口,从你是否是一个真正的设计人员的角度出发,而不是为了显示你知道这个概念就滥用它的。 设计接口,都是有其目的,有其用意的。.net框架的控件里面并没有GetValue的接口,为什么呢?人家做的东西要严谨,适用范围要广,这个没有问题。但是也带来了一个缺点——我们要取值的时候写的代码比较多。那么平时我们取值的时候,那要写一大堆的代码吗?DropdownList控件有不下5种我们关心的Value但是常用的只有两种(value、text),其中value是最最常用的。那么我们规定DropdownList实现的GetValue就是回去其选的的Item的value值 。这样去定义没有什么错,当然你可以说这么定义适用范围就小了,如果我要去的不是value,而是text的时候怎么办?万事万物都是有利有弊,有长处有短处的,就看你的需求。根据你的需求去定义接口,而不是根据和你不相干的 去定义。微软做点东西,要尽可能的全面,要尽可能的照顾到所有。但是我们呢?仁者见仁,智者见智的事情了,每个人都有自己的看法。我上面的例子,只是希望能够给lz一个提示,一个启发。我理解面向对象非常吃力,非常慢,一个原因就是网上的例子,大都是“伪代码”,什么“动物——》猫、狗”了,什么“i农场”了。这些看得我都头疼,一点都理解不了。我是希望能够看到真正的代码,能够实际意义的代码,真实场景的代码。不知道lz是不是也是这样,如果lz不是这样的话,那就算我没说好了,呵呵。 如何实现本地搜索google商家信息 发送邮件时用户名如何绑定汉字 急。。 类的使用问题 教育行业的国家标准 【菜鸟求助】连接Oracle时出现的问题 哪里能下载到web方式做报表的代码,学习用? css中如何设置input当为disable时前景色为蓝色,当不为Disable时,则为无色 求助关于asp.net datagird的问题 dataGrid不能排序疑问 C#修改DIV背景图图错误,求指点! 新手:关于login控件编辑的问题 页面传递多值
接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类
至少要实现哪些功能,继承它的类可以增加自己的方法.
使用接口可以使继承它的类: 命名统一/规范,易于维护.
提供永远的接口。 当类增加时,现有接口方法能够满足继承类中的大多数方法,没必要
重新给新类设计一组方法,也节省了代码,提高了开发效率.
接口是给一组有一定关系的类,来使用的。接口不是为了少写点代码,而是为了调用的时候方便一点。举一个例子,提取控件值的例子。
一个页面里有三个控件,一个文本框,一个下拉列表框,一个复选框。
要取值怎么写?
textbox1.Text
dropdownlist.SelectedValue
check1.checked每个控件的取值的函数(属性)都不大一样,如果定义一个接口(iControl),接口里定义一个取值的函数(GetValue),然后各个控件都实现这个接口。
那么我们的取值代码就方便多了。for (int i = 0;i<Page.Controls.count;i++)
{
iControl ctrl = Page.Controls[i];
ctrl.GetValue;
}这样不管有多少个控件,我们一个相同的循环就都搞定了。上面的代码只是一个含义,并不一定符合语法,先写的。
DropdownList控件有不下5种我们关心的Value但是常用的只有两种(value、text),其中value是最最常用的。那么我们规定DropdownList实现的GetValue就是回去其选的的Item的value值 。这样去定义没有什么错,当然你可以说这么定义适用范围就小了,如果我要去的不是value,而是text的时候怎么办?万事万物都是有利有弊,有长处有短处的,就看你的需求。根据你的需求去定义接口,而不是根据和你不相干的 去定义。微软做点东西,要尽可能的全面,要尽可能的照顾到所有。但是我们呢?仁者见仁,智者见智的事情了,每个人都有自己的看法。我上面的例子,只是希望能够给lz一个提示,一个启发。我理解面向对象非常吃力,非常慢,一个原因就是网上的例子,大都是“伪代码”,什么“动物——》猫、狗”了,什么“i农场”了。这些看得我都头疼,一点都理解不了。我是希望能够看到真正的代码,能够实际意义的代码,真实场景的代码。不知道lz是不是也是这样,如果lz不是这样的话,那就算我没说好了,呵呵。