抽象类和接口的比较
相同点:
都不能实例化,都包含抽象方法
不同点:
接口 抽象类
只能包含抽象方法 可以包含普通方法
只能定义静态常量属性 可以定义普通属性
不能定义静态方法 可以
不能包含初始化块 可以
不能包含构造器 可以
多继承 单继承
总结:
接口中所以方法都是 public abstract
所以属性默认都是 public static final
抽象类除了包含抽象方法之外,和普通类有三点区别:
1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
2)抽象类不能用来创建对象;
3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。