它们的本质的区别太多了,只是你不了解,下面举几例:
1、从语法定义层面看abstract class和interface:
在abstract class方式中,Demo可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的abstract class。
2、从编程层面看abstract class和interface:
首先,abstract class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。也许,这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。其次,在abstract class的定义中,我们可以赋予方法的默认行为。但是在interface的定义中,方法却不能拥有默认行为,为了绕过这个限制,必须使用委托,但是这会 增加一些复杂性,有时会造成很大的麻烦。

解决方案 »

  1.   

    抽象类可以有非抽象的方法(定义实现),接口必须都是抽象的;去看看JAVA编程思想吧
      

  2.   

    java不支持多重继承,所以引入接口这个概念,你可以实现多个接口
      

  3.   

    规范,看看java.sql.*包啊,里面都是接口与抽象,其实可以说就是定义了一些规范,当使用这个规范时不用知道它是怎样实现的,只要知道怎么调用即可。
      

  4.   

    abstract class 中的方法可以被实例化,只要方法不声名为abstract。但是interface中的方法是不能实例化,其中成员变量须初始化。
      

  5.   

    能用接口的,就不用抽象,think in java 说得
      

  6.   

    接口是为了在java中实现多重继承