JDK8为接口加上defualt方法后和抽象类还有哪些区别:
- 虽然接口和抽象类都不能被实例化,但是抽象类可以有构造器,接口没有构造器
- 抽象类单继承(只能继承一个类),接口多继承(能继承多个接口)
- 抽象类中方法可以有public、protected、默认(包)甚至private范围的方法,接口只能有public范围的方法(即使是default也是public范围的)
- 属性修饰:接口默认都是public static final 抽象类中的属性修饰无限制
相同点:
- 接口中的方法实现类都要重写,抽象类中的抽象方法子类都要重写。
- 都支持动态绑定实现多态。