抽象类和接口的区别
1、一个类可以实现任意多个接口,但它最多且只能作为一个抽象类的子类。
2、一个抽象类可以含有若干个非抽象方法,而接口的所有方法,无论是否显示的声明为抽象的,都是抽象的。
3、一个抽象类可以声明实例变量,其子类可以继承这些实例变量,而接口不能声明实例变量,不过接口可以声明static final修饰的域。
4、一个抽象类可以声明构造方法,而抽象类不能。
5、一个抽象类的可见类修饰符可以是public\protected\private或者无修饰符(表示包内可见),而接口的可见性修饰符只能是public,或者无修饰符。
6、一个抽象类的抽象方法(非抽象方法还可以是private,当然是不能被继承)可见性修饰符可以是public\protected或者无修饰符(表示包内可见),而一个接口的方法只能是public。
7、一个抽象类是从Object类派生来的,它继承了Object类的clone()和eauals()方法。
共同点
1、都不能被实例化
2、子类必须实现抽象类或接口中的全部抽象方法