c#中为什么要用接口

来源:百度知道 编辑:UC知道 时间:2024/05/13 02:49:30
c#中为什么要用接口?有什么好处呢?我怎么感觉一点都不方便呢,找都找不到在哪实现的。
回答得倒挺快,先谢谢了,不过你说的是个鸟啊?我问的什么啊?我只是不理解为什么要用接口,这样一点也不方便嘛?不懂别他妈的在这儿瞎说。

你要把接口也理解成一种类,比如有个基类叫baseClass,一个继承他的类叫subClass,那么subClass也算是baseClass类型的,可以有这样的写法baseClass bc=new subClass()
接口也是一样,如果一个类MyClass实现了借口一个接口interfaceClass,你事实上可以把MyClass叫做interfaceClass的子类,可以有这样的写法interfaceClass ic=new MyClass()
这就是所说的多态的一部分基础。可以举个实在点的例子,比如你想写一个方法叫EnumAll,参数是一个类的实例,作用是例举出该实例中的每个子元素并打印出元素的ToString(如窗体的子元素是窗体中的控件,数组的子元素就不用说了吧),你就遇到两个问题
首先EnumAll参数的类型是什么。参数应该可以是一个Form类型,因为窗口中有很多控件,使用EnumAll和一个Form的实例做参数可以打印出包含在该参数窗体中的每个控件的名字;但是一个数组Object[]类型应该也可以使用EnumAll方法,EnumAll可以列举Object[]中的每个元素并打印。你是要把方法写成void EnumAll(Form e)还是写成void EnumAll(Object[] e)?
然后就是EnumAll怎样实现才能得到不同类型的实例的子元素?如果是void EnumAll(Form e)的形式,要想得到子元素要用
foreach(Control c in e.Controls)
{
Console.WriteLine(c.ToString());
}
的写法,如果数组要用
for(int i=0;i<e.length;++i)
{
Console.WriteLine(e[i].ToString());
}
的实现方法。
Form和Object[]是两种完全不沾边的类型,那么EnumAll到底该怎么写?
这时就可以使用接口,可以定义一个接口
interface IEnumable
{
Object next()