抽象类与接口区别
抽象类 | 接口 |
---|---|
关键字abstract class | 关键字interface |
子类extneds继承抽象类,单继承(is-a) | 子类implements实现接口,多实现(like-a) |
可以有构造器,构造器不是用来实例化的,用来给子类初始化的 | 不能有构造器 |
成员变量权限public、protected、private和default都可以 | 成员变量权限默认都是public static final,既接口中声明的变量都为常量不能被继承 |
抽象方法权限只有public、protected和default三种 | 接口方法权限默认为public,既public abstract |
可以包含静态代码块,也可以有静态方法 | 不可以有静态代码块,可以有静态方法 |
可以有普通方法 | 方法都是抽象的,不可以有普通方法 |
继承者如果全部实现抽象方法就不再是抽象类了,否则还是抽象类 | 下一代只可为实现者 |