1.抽象类
(1)包含一个或多个抽象方法的类必须声明为抽象类。类即使不含有抽象方法,也可以声明为抽象类。
(2)除了抽象方法外,抽象类还可以包含具体数据和具体方法。
(3)可以定义一个抽象类的对象变量,但它只能引用非抽象子类的对象。
2.接口
(1)接口中不能包含实例域或静态方法,但可以包含常量。
(2)接口中的方法自动地被设置为public abstract,域自动设为public static final。
3.接口与抽象类
(1)每一类只能扩展于一个抽象类,但能实现多个接口。Java利用接口机制实现多继承的大部分功能。
(2)抽象类可以定义构造器方法;接口不能。
(3)抽象类的可见性修饰符可以是public、protected、private或包可见;接口只能是public或包可见。
(4)抽象类的方法可见性为public、protected、private或包可见;接口中的方法只能是public。
(5)抽象类从Object派生而来,继承了Object的clone()方法和equals()方法。