abstract class 和 interface 都提供可以不具体实现的方法。其中一个类不能继承多个abstract方法,但是可以实现多个interface。java类没有多继承,但是通过interface来来补充。通过实现过个interface,来实现java多重继承。 java中所有的对象可以用类来表示,但并不是所有的类都是来描绘对象的。用来描绘某一类对象共有的本质就是抽象。
different 从语言层面讲:
abstract class :
可以有 自己的 (private)数据成员。 有些方法可以具体实现。
abstract class可以提供某些方法的部分实现,而interface不可以,这大概就是abstract class唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而 interface做不到这一点,如果向一个interface里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再 实现这个方法才行。
interface :
不可能有自己的数据成员,只能有静态的,不能被修改的 数据成员。即就是 static final。
所有的成员方法都是abstract的。从这方面说interface是abstract class 的一种特殊情况。