回 帖 发 新 帖 刷新版面

主题:[讨论]接口到底有什么用?

我们定义一个接口
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 楼


接口主要是针对“[color=FF0000] 行为 [/color]”来的。比如人、狗、机器都会Move。这样就可以用一个interface来[color=FF0000][b]集中管理[/b][/color]Move。

楼主的那个例子,在一定情况下用继承也可(如果所有的狗狗都会叫就可以)。如果我们扩展一下,把绒毛玩具狗作为一个子类,这样bark()行为就不应该给予绒毛玩具狗。此时,从设计的角度考虑,就要用interface而不是继承。

22 楼

请的不错,谢谢,楼主提出这样的问题,
也谢谢,回贴人的解释!

23 楼

先谢谢楼主,提出的问题
再谢谢回贴人,解释问题!

24 楼


说得好,补充点,接口还实现了C#的多重继承.

25 楼

呵呵,不全面.什么是接口?比如我的程序可以有日志输出,但我自己并没有具体的日志程序,只开放了一个接口,ILog,具休的有这几个方法,Info ,Warning,Error,Debug...同时我有个配置文件,这个文件告诉程序,具体是哪个类实现了这个接口.OK,比如你用了log4net,写了此代码封装了一下,然后程序就可以输出日志了...

26 楼

[quote]c# 不能同时继承自多个类,但我们又想它实现类似的功能, 这时我们便有了接口[/quote]
现在我真的明白为什么要用到接口拉~~真是多谢~~[em2]

27 楼

受益匪浅。

28 楼

OOP思想嘛

29 楼

说的很清楚,谢谢楼主

30 楼


哈哈,说的好清晰啊!谢....

我来回复

您尚未登录,请登录后再回复。点此登录或注册