接口的真正作用是什么?
看了很多有关接口的实例,感觉接口只是提供了一个规范,不用接口也可以同样实现类的方法。
我总觉得接口没这么简单吧,想请教下大鸟们,接口真正的不可替代的作用是什么呢。
public interface 接口()
{
public void 方法();
}
public class 类:c
{
public void 方法();
}
我直接
public class 类
{
public void 方法();
}
一样啊,接口反而多此一举不是吗。
[解决办法]
接口可以多继承,这是C#的语法特性。
如果不用接口,C#里你如何实现多继承呢?
[解决办法]
请看《Head First设计模式》
我当年就是看了它 悟出来的~
[解决办法]
http://www.cnblogs.com/leoo2sk/archive/2009/06/17/di-and-ioc.html
仔细看完。。。我当年就是看完这个之后彻底领悟了
[解决办法]
有本英文书忘了叫什么,介绍继承类和接口时时大致是这样描述的:inherit a class is "it likes something",inherit a interface is "doing likes something";英文大致是这样,也有点忘了,我个人觉得说的非常到位
[解决办法]
这本书绝对是面向对象入门宝典!
------解决方案--------------------
简单来说,用接口类型代替真实的类型,去访问它的方法。
如果没有接口,就只能反射了。
按照你写的:
public class 类
{
public void 方法();
}
我们再写一个
public class 另一个类
{
public void 方法();
}
注意,类和另一个类没有继承关系。
如果没有接口,如果我们写这样一个方法:
void foo1(类 obj)
{
for (int i = 1; i < 10000; i++) obj.方法();
}
现在我们希望这个方法也管上另一个类,请问怎么做?
我们只能再写一次:
void foo1(另一个类 obj)
{
for (int i = 1; i < 10000; i++) obj.方法();
}
尽管方法体完全一样,一个字不差!
有了接口,可以这么写:
void foo1(接口 obj)
{
for (int i = 1; i < 10000; i++) obj.方法();
}
这样,类和另一个类只要实现了接口,都可以尽管传进来。
[解决办法]
学了不少知识 谢谢
[解决办法]