抽象类与接口的区别
No. | 区别 | 抽象类 | 接口 |
1 | 关键字 | abstract class | interface |
2 | 组成 | 构造方法,普通方法,抽象方法,static方法,常量,变量 | 全局静态常量,抽象方法 |
3 | 子类使用 | class 子类 extends 抽象类 | class 子类 implements 接口1,接口2... |
4 | 关系 | 抽象类可以实现多个接口 | 接口不能继承抽象类,却可以集成多个父接口 |
5 | 权限 | 可以使用各种权限 | 只能使用public权限 |
6 | 限制 | 单继承局限 | 没有单继承局限 |
7 | 子类 | 抽象类和接口都必须有子类,子类必须要重写全部的抽象方法 | |
8 | 实例化对象 | 依靠子类对象的向上转型进行实例化对象 |
抽象类中支持的功能比接口多!
但只有一个缺点:单继承局限! 这一个缺点就掩盖了抽象类所有优点!
即:当抽象类和接口都可以使用的时候,优先考虑接口!
一个不成文的参考:
1.在进行公共操作的时候一定要定义接口!
2.有了接口就需要利用子类完善方法!
3.如果是自己写的接口,那么绝对不要使用关键字new直接实例化接口子类,利用工厂类完成!