【笔记】抽象类和接口的区别

    今天俺突发奇想,脑子里浮现出抽象类和接口这2个名词。其实这2个概念在很多玩C#的人脑子里都出现过。我当时入门的时候也好几次出现在我眼前,但一直没深刻理解这2个概念之间的区别。今天琢磨了半天,同时在CSDN上看了好几贴这样的提问帖,再去看了一遍《C#入门经典》,才基本搞明白了。
    下面我总结一下他们两的区别和使用的场合,大概就一段话(挑主要的说):
     抽象类告诉外界我有什么;接口描述我能做什么;抽象类只能派生一个子类。意思就是说只能有一个子类去实现抽象类中的虚方法。而接口可以被多个类去实现。假如某种方法只有一种实现方式,则可以用抽象类。否则,如果有多种实现方法则应该用接口。
     还有很多他们之间的区别在网上很多都有说(比如抽象类中可以有具体方法的实现代码,而接口中不能包括具体实现代码等),在这里我就不copy过来了,可以google一下就行,tag是抽象类 基类 接口。
     这有一段实例代码(小弟想出的用动物去描述),大家可以参考一下去配合理解他们之间的区别:
     因为大致上所有的动物(包括人)吃东西都是用嘴的,所以这里用抽象类实现    
    abstract class 动物吃东西
     {
           void 吃东西();   \\方法
      }
     
      class 人吃东西:动物吃东西
      {
           void 吃东西()
            {……   //实现的具体方法}
      }
      而动物的繁殖方法不是没一种都一样的(小小色情一下),所以繁殖的方法用接口实现:
      interface 动物繁殖
      {
            void 繁殖();
       }
      class 鱼:动物繁殖
      {
            void 繁殖()
             {……   //鱼的繁殖方法}
       }
       class 人:动物繁殖
       {
             void 繁殖()
              {……   //人的繁殖方法}
       }
     以上是我理解抽象类、基类、接口的一点心得,也算个学习的笔记。免得日后老的时候忘了,能回来这里看看。^_^
 

posted on 2008-06-25 17:13  Daniel_xuan  阅读(466)  评论(1编辑  收藏  举报

导航