interface表示行为,比如flyable
abstract class表示较为抽象的概念,通常这种概念在某些方面比较具体,但是有些方面无法给出具体的实现,比如bird。所有的bird都有翅膀,有喙,但是到底是什么样的翅膀,什么样的喙是不能确定的。hawk类继承自bird类,由于hawk的翅膀类型,喙类型都是可以确定的,所以hawk类是具体类
hawk类实现flyable接口,所以hawk类必须提供public 的fly方法,以实现飞翔。体会一下这两句话的区别:
hawk是一种bird
hawk具有flyable的能力

解决方案 »

  1.   

    讨论过很多了很难明确的告诉你。。需要你慢慢理解的。。简单的从功能上讲,,abstract 有 已经实现的方法,而接口没有。
    其他的abstract终究是个class不能多重继承,而接口是个interface是可以多重继承的。http://expert.csdn.net/Expert/topic/2845/2845122.xml?temp=.4305994
    http://expert.csdn.net/Expert/topic/2715/2715491.xml?temp=.3493006
    http://expert.csdn.net/Expert/topic/2723/2723285.xml?temp=.1941492
    http://expert.csdn.net/Expert/topic/2671/2671041.xml?temp=.8485834
      

  2.   

    抽象类允许包含某些方法的实现,接口不允许。为实现一个由抽象类定义的类型,它必须成为抽象类的一个子类。任何一个类,只要它定义了所有要求的方法,并且遵守通用约定,则它就允许实现一个接口。java只允许单继承,抽象类作为类型定义受到了极大的限制。