问一个关于接口的有关问题.


问一个关于接口的问题...
本人从学到用C#已经有半年多了,其中自己做个几个项目,但发现,我做过的所有项目里,都没用用到过接口这个概念..

所以现在想问一下各位,就是想知道接口应该 "何时用,为何用 "

C#语言 .net 程序开发

AKIKO 11 years, 8 months ago


做的项目越小越不会用到~~~就像一些工程图纸一样~~~你捏个泥巴用不着先画图纸~~~

掉在地上的番茄 answered 11 years, 8 months ago


INTERFACE主要还是要从设计来理解,不能完全从代码层面来理解.
一般使用接口有两个目的,一,解耦,二,扩展.其实没有接口,在不考虑扩展的前提,完全可以没有接口.

因此,楼主先不要关键,慢慢来,先熟悉OO的基本概念,然后再慢慢接触一些设计方面的知识后,你就会自然而然的理解和应用.

PS:千万不要为了做接口而接口,那样通常会误用,反而不利于扩展了.

此用户已被屏蔽 answered 11 years, 8 months ago


应该说不是何时用,为何用的问题了,而是不得不用,没法不用。

接口还有虚函数都一种运行时动态绑定的意思。也就是说写代码的时候根本没法确定到时会执行什么。你可以从这个角度开始考虑问题。什么情况下,我是根本无法预测会执行哪个?但我可以预先把运行逻辑写好,是不是会有这种情况???
再想想,这种情况是不是太多太多了?

一个非常典型的例子就是数据绑定。仔细了解一下的话,你会发现要实现数据绑定这样的功能,没有接口是根本无法实现的。这就是不得不用。



小三头黄金龙 answered 11 years, 8 months ago


adodotnet() ( ) 信誉:100 Blog
已经说得很好了,我再说一下,接口做用主要一点就是用来规范程序。另一个比较灵活的适用就是 可以这样:ITest {void Hello();} <]--- Test1{public void Hello{Console.WriteLine( "test1 ");}}, Test2{public void Hello {Console.WriteLine( "test2 ")}} (Test1和Test2分别inherit ITest)
现有一个
ClassA {
public ITest GetTest(ITest itest) {
...
return itest;
}
}

...
ClassA classA = new ClassA();
ITest itest = classA.GetTest(new Test1());
itest.Hello();
itest = classA.GetTest(new Test2());
itest.Hello();
楼主试试吧,这样就可以很灵活的写代码了。

yfflyer answered 11 years, 8 months ago


用不上的地方也确实没必要用。

但确实一开始编C#程序,就算是最简单的,那后面也是有好多的接口参与着,不是吗?

笼统的讲,我想用同一种方式使用不同派系的功能时用接口。

IMyInterface interface = class1;
interface.Go(); //执行Class1的Go

下一时刻 interface = class2;
inteface.Go(); //执行Class2的Go

再下一个时刻...

一个interface就可以执行各种类的方法。我甚至可以在代码里先
interface.Go(); 没必要预先知道我要执行谁的Go

只要哪个在实现了IMyInterface,还有接口定义的Go方法,那么我就能执行。我预先不管你是哪家来的,只要你实现了IMyInterface,那你就能被我调用。

。。。。


kaorisa answered 11 years, 8 months ago

Your Answer