关于抽象类(abstract class)和接口(interface)做一个形象的解释:
抽象类是is-a的关系,是一种本质属性,java中的类不支持多重继承;而一个类可以继承多个接口,接口可以看做是一种功能属性。
接口中的方法必须是static方法,而抽象类中可以有非static的方法,甚至可以实现。抽象类在进行表述的时候,是说只要有抽象方法的类就是抽象类,所以这一点跟接口是非常不同的。
接口中的数据成员只能是public static final并且必须给其初值,在实现类中不能重新定义也不能改变其值,一般来说接口中不会有数据成员,接口中的成员方法默认是public abstract的。
接口是一种特殊约束下的抽象类。
http://dev.yesky.com/436/7581936.shtml#pl
http://kb.cnblogs.com/page/42159/