1、接口是要被实现的,抽象类是要被继承的。
2、接口和抽象类都不能直接实例化,如果要实例化,需要指向继承抽象类或者实现了接口的类对象进行实例化。抽象类中可以有构造方法
3、接口只能做方法声明,抽象类中的抽象方法只能做方法声明,普通方法也可以有方法实现。抽象类中的方法访问权限可以为public,protected。接口中抽象类只能是public的,并且默认为public abstract
4、接口中定义的变量只能是公共的静态常量,抽象类中的变量是普通变量
5、实现接口的类,如果不能全部实现接口中的方法,则此类也只能是抽象类。继承抽象类的子类,如果不能实现所有的抽象方法,则此类也必须为抽象类,且包含此未实现的抽象方法。
6、抽象类内可以没有抽象方法,有抽象方法的类必须为抽象类
7、抽象方法只能申明,不能实现。接口是设计的结果,抽象类是重构的结果
8、抽象方法是要被继承实现的,所以不能是私有的,也不能是静态的
9、接口可以实现多接口,抽象类只能单继承,并且需要先继承再实现
子类继承父类,其实是继承了父类的所有内容,只是对于一些受保护的,私有的内容,只是拥有,不能使用。
抽象类中可以包括静态方法。Jdk1.8之后接口中可以包含静态方法。
详细描述
https://blog.csdn.net/gongxiao1993/article/details/82055007