抽象类 - 单继承
- 关键字为abstract, extends, 被类所继承
- 不可以被final修饰
- 抽象方法不可以被private修饰,但其他三个不受限制
- 抽象方法一定存在于抽象类中,但是抽象类中不一定有抽象方法
- 抽象类的子类必须全部重写抽象方法,如果只重写部分抽象方法,则该子类同样为抽象方法
- 抽象类中不一定全部都是抽象方法,方法可以有方法体
- 抽象类不可以实例化对象
- 抽象类可以实现接口,因为接口的内容也都是抽象的
接口 - 多实现
- 关键字为interface, implements, 被类所实现
- 同样不可以被final修饰
- 接口只允许三种成员存在:
- 公共的静态常量 public final static
- 公共的抽象方法 public abstract
- 静态内部类 static class
- 由上可知,接口的作用域必须为public
- 接口的抽象方法也必须全部被实现类所重写,否则实现类为抽象类
- 不同的接口之间为继承关系,而且可以多继承
- 接口不可以实例化对象
- 接口不可以继承抽象类,因为抽象类中有可能存在非抽象方法,与接口的概念相悖
二者区别
- 每个类只能继承一个抽象类,但是可以实现多个接口
- 抽象类可以有非抽象方法,接口全部为抽象方法
- 从作用域角度看,抽象类中抽象方法不能为private,而接口强制为public abstract
- 抽象类可以实现接口,但是接口不能继承抽象类
- 不同的接口可以多继承,但是不同的抽象类只能单继承
以上。
网友评论