主题:[讨论]接口到底有什么用?
			 xclw
				 [专家分:380]  发布于 2006-03-23 18:01:00
 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
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
amsfrog [专家分:0]  发布于 2007-11-15 15:57:00				
				请的不错,谢谢,楼主提出这样的问题,
也谢谢,回贴人的解释!
							 
						
				23 楼
				
					 amsfrog [专家分:0]  发布于 2007-11-15 15:58:00
amsfrog [专家分:0]  发布于 2007-11-15 15:58:00				
				先谢谢楼主,提出的问题
再谢谢回贴人,解释问题!
							 
						
				24 楼
				
					 yyxxlong [专家分:0]  发布于 2007-11-18 21:00:00
yyxxlong [专家分:0]  发布于 2007-11-18 21:00:00				
				
说得好,补充点,接口还实现了C#的多重继承.
							 
						
				25 楼
				
					 hanyongren [专家分:150]  发布于 2007-11-21 16:21:00
hanyongren [专家分:150]  发布于 2007-11-21 16:21:00				
				呵呵,不全面.什么是接口?比如我的程序可以有日志输出,但我自己并没有具体的日志程序,只开放了一个接口,ILog,具休的有这几个方法,Info ,Warning,Error,Debug...同时我有个配置文件,这个文件告诉程序,具体是哪个类实现了这个接口.OK,比如你用了log4net,写了此代码封装了一下,然后程序就可以输出日志了...
							 
						
				26 楼
				
					 psyuhen [专家分:0]  发布于 2007-11-23 13:05:00
psyuhen [专家分:0]  发布于 2007-11-23 13:05:00				
				[quote]c# 不能同时继承自多个类,但我们又想它实现类似的功能, 这时我们便有了接口[/quote]
现在我真的明白为什么要用到接口拉~~真是多谢~~[em2]
							 
						
						
				28 楼
				
					 untitled [专家分:10]  发布于 2007-11-29 23:51:00
untitled [专家分:10]  发布于 2007-11-29 23:51:00				
				OOP思想嘛
							 
						
				29 楼
				
					 hg344700 [专家分:0]  发布于 2007-12-04 12:26:00
hg344700 [专家分:0]  发布于 2007-12-04 12:26:00				
				说的很清楚,谢谢楼主
							 
						
				30 楼
				
					 zhhf123 [专家分:0]  发布于 2008-02-28 15:58:00
zhhf123 [专家分:0]  发布于 2008-02-28 15:58:00				
				
哈哈,说的好清晰啊!谢....
							 
									
			
我来回复