今天看接口与抽象类,越看越糊涂,看了很多例子也没看出接口有什么作用,感觉用了还麻烦.
//公共接口: "动物" 
public Interface IAnimal 

      int EyeNumber; 
      private void Behavior(); //行为方法,描述各种动物的特性 
} //类: 狗 
public Dog : IAnimal 

     string ActiveTime = "白天"; 
     private void Behavior() 
     { 
           Console.Write("我晚上睡觉,白天活动"); 
      } 
}//类: 猫 
public Cat: IAnimal 

      string ActiveTime = "夜晚"; 
       private void Behavior() 
       { 
                  Console.Write("我白天睡觉,晚上活动"); 
        } 
} public Behavior(IAnimal myIanimal) 

       myIanimal.Behavior(); 

//简单的应用: 
public static Main() 

       Dog myDog = new Dog(); 
       myDog.Behavior(); //输出: "我晚上睡觉,白天活动" 
       Cat myCat = new Cat(); 
       myCat.Behavior(); //输出: "我白天睡觉,晚上活动" 
} Dog myDog = new Dog(); 
Cat myCat = new Cat(); 
Behavior(myDog); //Behavior接受“狗”类实例 
Behavior(myCat); //Behavior接受“狗”类实例 这样Behavior方法写一次就能完成所有继承它的类中的相同名方法的不同功能. 非常方便我真没发现它哪里方便了,不用接口,直接创建类的实例,然后调用类中的方法不就行了?还有后面说的扩展性,说如果
加一种动物,用了接口就很方便了,我也没看出来用了接口为什么方便,就算不用接口,我再新建一个类(用了接口还是要新建的),再创建类的实例,调用类中的方法不就OK了??

解决方案 »

  1.   

    请假设IAnimal中有一万行代码。
    用接口,每种Animal都只要写自己不同的特性部分的代码。
    不用接口,每种Animal都必须加上这一万行代码。
      

  2.   

    接口不是你给自己用的,是给别人用的...但首先你要分清楚你自己在编程中的角色,即使写代码的只有你自己...能分清楚哪个你是provider哪个你是client,你才能明白软件工程及协作的意义...搞明白这点你才能明白接口有什么用...去看看这个...【.NET版月经问题】之一【接口有什么用】
      

  3.   

    一楼的话很通俗很好懂,你的实例代码也很清楚的描述了接口的方便性,只是在main方法里却没有用上接口
    用你的代码修改了一下
    public Interface IAnimal  
    {  
      int EyeNumber;  
      private void Behavior(); //行为方法,描述各种动物的特性  
    }  //类: 狗  
    public Dog : IAnimal  
    {  
      string ActiveTime = "白天";  
      private void Behavior()  
      {  
      Console.Write("我晚上睡觉,白天活动");  
      }  
    }//类: 猫  
    public Cat: IAnimal  
    {  
      string ActiveTime = "夜晚";  
      private void Behavior()  
      {  
      Console.Write("我白天睡觉,晚上活动");  
      }  
    }  public Behavior(IAnimal myIanimal)  
    {  
      myIanimal.Behavior();  
    }  
    //简单的应用:  
    public static Main()  
    {  
      IAnimal myDog = new Dog();  
      IAnimal.Behavior(); //输出: "我晚上睡觉,白天活动"  
      IAnimal myCat = new Cat();  
      IAnimal.Behavior(); //输出: "我白天睡觉,晚上活动"  
    }  
    如上代码,通过接口实现了对Behavior方法的封装,这意味着我不需要去管实现了这个接口的其他的类的Behavior方法内部具体是怎么做,我只管用就可以
      

  4.   


    不对。接口最重要的功能之一就是多态,是实现工厂的基础。你去接触下reflect、泛型、设计模式与代码规范及约束,哪里没有接口的影子。仅一个IEnumerable<T>,几乎能在代码里完成一切集合对象的引用,更别提其它接口与泛型的组合的强大扩展性,各种变化,一言难以蔽之。
      

  5.   

    换句粗话,没有接口,.net里面那些I开头的,你都没法用。