(1)抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类变量。

(2)接口只能做方法的申明,抽象类可以做方法申明,也可以做方法实现(jdk8中,接口可以有是实现方法,使用default修饰)

(3)接口里定义的变量只能是公共的静态常量(public static final),抽象类中的变量是普通变量。

(4)抽象类里的抽象方法必须全部被子类实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个类实现接口时不能全部实现接口方法,那么该类也只能是抽象类。

(5)抽象方法要被实现,所以不能是静态static的,也不能是私有private的,也不能被final修饰。