关于接口,我一直没明白,谁点拨下
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#会不允许多层父类却允许多层接口
------解决方案--------------------你上面的代码是没有区别的