1.接口要被实现,抽象类要被继承 2.一个类可以实现多个接口,甚至一个接口也可以实现另一个接口,但是只能继承一个抽象类 3.抽象类主要用来抽象一种事物,接口主要用来抽象一种功能 4.抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象,如:List<> list = new ArrayList<>();。 5.接口只能有方法声明,抽象类中可以有方法声明,也可以有方法实现 6.接口里定义的变量只能是公共的静态的常量,默认都是final的,抽象类中的变量可以包含非final变量 7.接口内的所有方法隐含的都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法 8.接口中的成员方法都是public的,抽象类的成员方法可以是private、protected、或者public的 9.抽象类也不可以被实例化,但是如果抽象类中包含main方法那么是可以被调用的 10.一个类实现一个接口,那就必须实现接口中声明的所有方法。但是一个类继承一个抽象类,可以不实现抽象类的所有方法,当然此时这个子类必须声明为抽象才行