首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于接口的一点小迷茫,请各路大牛进,该怎么解决

2012-04-11 
关于接口的一点小迷茫,请各路大牛进C# codenamespace ConsoleApplication11{class Program{static void Ma

关于接口的一点小迷茫,请各路大牛进

C# code
namespace ConsoleApplication11{    class Program    {        static void Main(string[] args)        {                       Ic ik = new b();            ik.show();            ik = new a();            ik.k = 123;            b mb = new b();            mb.showD();                                    Console.ReadKey();        }        class a : Ic        {            public int k { get; set; }            public void show()             {                Console.Write("a show\n");            }        }        class b :d,Ic        {           public int k{get;set;}            public override void show2()             {                Console.Write("b show2\n");            }            public void show()            {                Console.Write("b show\n");            }        }        interface Ic        {            void show();            int k { get; set; }                    }        abstract class d         {            public abstract void show2();                        public void showD()            {                Console.WriteLine("d show fun=showD");            }        }    }}


最近用到接口了就仔细的看了一下,感觉挺方便,但是还有一些迷茫的地方:

1、 Ic ik = new b();

为啥要这样写呢?b是一个类,Ic是一个接口,将一个类直接实例化到一个接口上?
因为后面还可以这样写,ik=new a();

访问的时候是不是通过接口只能看到接口指定的几个方法或者属性?

2、用接口是不是就为了将两个不同的类,相同的方法、属性联系起来?

[解决办法]
所以不是说为了显示“我会用接口呀”这样的角度而写
C# code
Ic ik = new b();
[解决办法]
面向接口编程,会更加灵活,接口变量可以作为方法的一个参数。
[解决办法]
1,2是关联问题
接口编程能更耦合共性操作,运行时多态
[解决办法]
接口可以用来表示任何实现它的类,就像基类可以表示任何由它派生出的类一样。
这样式有好处的。

比如一个函数

int somefunc(ImyInterface obj)
{
...
}

这个函数里面obj只使用了ImyInterface里定义的功能,就可以这样声明,这样,所以实现了ImyInterface的类的实例都可以当参数,这个函数就不用关心这些参数到底是什么类型了。非常方便!

热点排行