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

关于接口,我一直没明白,谁点拨下
public   interface   IMyInterace
        {
                void   DoSomething();
        }
        class   Program:IMyInterace
        {
                public   void   DoSomething()
                {
                        Console.WriteLine( "111 ");
                }
                static   void   Main(string[]   args)
                {
                        Program   t1   =   new   Program();
                        t1.DoSomething();
                }
        }


接口是那么用的吗?如果是的话,与以下代码有何区别:

        class   Program
        {
                public   void   DoSomething()
                {
                        Console.WriteLine( "111 ");
                }
                static   void   Main(string[]   args)
                {
                        Program   t1   =   new   Program();
                        t1.DoSomething();
                }
        }

------解决方案--------------------
接口嘛,举个例子,你要用u盘时,难道自己在电脑做一个usb接口,当然时用上面自带的嘛
------解决方案--------------------
转贴

1. Interface, "like a "关系; abstract class, "is a "关系

2. Interface是一种契约, abstract class是事物本质的抽象概括

由以上两点, 什么时候用Interface什么时候用abstract class有看你如何理解你的设计对象, 例如, 某一天你可能会要设计一个Door的类, 它有Open和Close两个功能, 于是

public interface Door
{
void Open();
void Close();
}

public abstract class Door
{
void Open(){};
void Close(){};
}

就目前来说, 你用Interface还是用abstract class基本上没什么区别, 两者都用来描述Door的行为, 只不过用Interface是在强调Door额外的有Open和Close这两个功能, 而用abstract class则是在强调Door自带有Open和Close的能力

走远一点, 假如又有一天, 你要写一个AlarmDoor的类, 这个时候...

public interface AlarmDoor
{
void open();
void close();
void alarm();
}

public abstract class AlarmDoor
{
void open(){};
void close(){};
void alarm(){};
}

现在, 你应该想清楚你究竟是想设计一个报警器还是想设计一扇门, 如果选择Interface, 那你是在想设计一个报警器, 如果选择abstract class, 那你是在想设计一扇门, 说到现在, 是否有点眉目了?

C#里面不允许多个父类, 但却允许多个接口, 接口无非是让某个类拥有某种行为, 而抽象类却是在让某个类拥有某种本质, 因此, 我们设计的类, 应该用一个抽象类把它的所有本质都抽象出来, 而它的一些行为(或者说是契约)则通过Interface来实现, 这也能说明为什么C#会不允许多层父类却允许多层接口

------解决方案--------------------
你上面的代码是没有区别的