首页 新闻 会员 周边 捐助

抽象类和接口的用法区别?

0
悬赏园豆:5 [已解决问题] 解决于 2014-01-17 09:01

最近在看一些面向接口编程文章,遇到小疑问,我们都说面向接口编程,为什么不提倡说面向抽象类编程,我觉得抽象类除了不能多继承外,其他都和接口相同啊。接口和抽象类使用上还有什么区别吗,或者说接口除了多继承之外,还有什么比抽象类更好的优点?本人有点迷糊了,求高人指教!

隔壁老王来了的主页 隔壁老王来了 | 初学一级 | 园豆:99
提问于:2014-01-16 16:30
< >
分享
最佳答案
0

不是说用接口就叫面向接口编程.

面向接口是一种思想,说的是将一个功能作为一个接口发布.你用抽象类来做也是一样的,那也叫面向接口编程.

抽象类因为会有自己的成员或者方法,又会造成耦合.所以一般都用接口

收获园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2014-01-16 16:35

你的解释我非常同意,能否再帮我指点下面向接口编程有什么优点?我知道的很少。

隔壁老王来了 | 园豆:99 (初学一级) | 2014-01-16 16:42

@追梦赤子心: 这些都属于面向对象.做程序员早晚要学.

总归来说目的就是让代码更好维护.和复用.面向对象最简单的应该就是面向接口.

面向对象就是个大课题了.这么点打不完的.你可以百度下.或者学习下"设计模式"

吴瑞祥 | 园豆:29449 (高人七级) | 2014-01-16 16:50
其他回答(7)
0

你提供两份分别用抽象类和接口写的代码看看。

Launcher | 园豆:45050 (高人七级) | 2014-01-16 16:33
0

接口和抽象类的关注点不同,接口的关注点是行为,抽象类的关注点是对象,举个例子,比如系统有两个对象:麻雀和大雁,如果想提取公共部分,那么就用抽象类,叫“鸟”,鸟这个抽象类里可以把麻雀和大雁及其他鸟类共有的属性或行为用代码实现了(代码复用),如果想某种鸟类具备自己独特的行为,那么就重写父类的方法。此后系统中又加入了飞机对象,如果要把飞这个动作抽象出来就用接口,比如叫IFly吧,麻雀、大雁以及飞机都可以实现接口IFly这个飞的行为。

 

接口封装一个或多个有联系的行为。抽象类封装具有共同点的一系列对象的属性和方法。

 

以上是个人理解,仅供参考,下面是伪代码

 

absClass AbsBird
{
   public String Name{get;set;} 
   public void Run()
  {
        print(this.Name + "is running";)
  }   
  public void virtual Fuck()
  {

   }
}

Interface IFly
{
    void Fly();
}

Class 飞机 : IFly
{
   void Fly()
   {
       print("靠油作为动力飞行");
   }

}

Class 麻雀: AbsBird, IFly
{ 
    override void Fuck()
   {
      print("叽叽喳喳")
    }
    
     void Fly()
     {
        print("主要靠胸肌飞行");
     }

}

Class 大雁: AbsBird, IFly
{ 
    override void Fuck()
   {
      print("咕咕咕咕")
    }
    
     void Fly()
     {
        print("主要靠气流飞行");
     }

}
会长 | 园豆:12463 (专家六级) | 2014-01-16 16:46

谢谢你的指点,鞭辟入里,受教了!

支持(0) 反对(0) 隔壁老王来了 | 园豆:99 (初学一级) | 2014-01-16 17:09

@追梦赤子心: 个人理解,建议楼主爱看看楼下的链接吧,多听则明,也许我理解的也有问题

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2014-01-16 17:14
0
多头牛 | 园豆:186 (初学一级) | 2014-01-16 16:57

谢谢你分享,我一点开,我就立马收藏了!哈哈,回家好好研究下!!

支持(0) 反对(0) 隔壁老王来了 | 园豆:99 (初学一级) | 2014-01-16 17:10
0

http://www.cnblogs.com/yuchengNET/p/3522165.html   http://kb.cnblogs.com/page/41836/看看这两篇文章。

接口是一种规范,而抽象是对对象的抽象。

aehyok | 园豆:1212 (小虾三级) | 2014-01-16 18:37

谢谢你的分享!

支持(0) 反对(0) 隔壁老王来了 | 园豆:99 (初学一级) | 2014-01-17 08:56
0

接口一般指的是一种能力 有些书中定义接口 喜欢用I开头 able结尾  就是一种能力

wolfy | 园豆:2636 (老鸟四级) | 2014-01-16 18:52
0

接口是一种通用的协议。面向接口编程可以使得编程者不关心具体实现的细节,而只关心一个统一的标准。

举个例子,你买了一台新的组装机,你不需要知道那些硬件具体的工作原理,只需要知道如何使用它们的接口相互连接起来,就可以使这台计算机正常工作。

飞鸟_Asuka | 园豆:393 (菜鸟二级) | 2014-01-16 20:29
0

抽象是对其继承一族的特性和行为进行规范,而接口是对不同族群的最小行为规范

Yu | 园豆:12990 (专家六级) | 2014-01-17 08:41

有道理,我记住了!

支持(0) 反对(0) 隔壁老王来了 | 园豆:99 (初学一级) | 2014-01-17 08:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册