主题:[讨论]接口到底有什么用?
xclw
[专家分:380] 发布于 2006-03-23 18:01:00
我们定义一个接口
public interface IBark
{
void Bark();
}
再定义一个类,继承于IBark,并且必需实现其中的Bark()方法
public class Dog:IBark
{
public Dog()
{}
public void Bark()
{
Consol.write("汪汪");
}
}
然后,声明Dog的一个实例,并调用Bark()方法
Dog 旺财=new Dog();
旺财.Bark();
试想一样,若是想调用Bark()方法,只需要在Dog()中声明这样的一个方法不就行了吗,干什么还要用接口呢.因为接口中并没有Bark()具体实现.真的实现还是要在Dog()中.那么使用接口不是多此一举吗?
(先下班,明天再讨论,大家也来说说自己对接口的理解和认识)
回复列表 (共32个回复)
21 楼
renbenzhuyi [专家分:0] 发布于 2007-11-10 12:38:00
接口主要是针对“[color=FF0000] 行为 [/color]”来的。比如人、狗、机器都会Move。这样就可以用一个interface来[color=FF0000][b]集中管理[/b][/color]Move。
楼主的那个例子,在一定情况下用继承也可(如果所有的狗狗都会叫就可以)。如果我们扩展一下,把绒毛玩具狗作为一个子类,这样bark()行为就不应该给予绒毛玩具狗。此时,从设计的角度考虑,就要用interface而不是继承。
22 楼
amsfrog [专家分:0] 发布于 2007-11-15 15:57:00
请的不错,谢谢,楼主提出这样的问题,
也谢谢,回贴人的解释!
23 楼
amsfrog [专家分:0] 发布于 2007-11-15 15:58:00
先谢谢楼主,提出的问题
再谢谢回贴人,解释问题!
24 楼
yyxxlong [专家分:0] 发布于 2007-11-18 21:00:00
说得好,补充点,接口还实现了C#的多重继承.
25 楼
hanyongren [专家分:150] 发布于 2007-11-21 16:21:00
呵呵,不全面.什么是接口?比如我的程序可以有日志输出,但我自己并没有具体的日志程序,只开放了一个接口,ILog,具休的有这几个方法,Info ,Warning,Error,Debug...同时我有个配置文件,这个文件告诉程序,具体是哪个类实现了这个接口.OK,比如你用了log4net,写了此代码封装了一下,然后程序就可以输出日志了...
26 楼
psyuhen [专家分:0] 发布于 2007-11-23 13:05:00
[quote]c# 不能同时继承自多个类,但我们又想它实现类似的功能, 这时我们便有了接口[/quote]
现在我真的明白为什么要用到接口拉~~真是多谢~~[em2]
28 楼
untitled [专家分:10] 发布于 2007-11-29 23:51:00
OOP思想嘛
29 楼
hg344700 [专家分:0] 发布于 2007-12-04 12:26:00
说的很清楚,谢谢楼主
30 楼
zhhf123 [专家分:0] 发布于 2008-02-28 15:58:00
哈哈,说的好清晰啊!谢....
我来回复