Java编程--抽象类和接口的区别
No. | 区别 | 抽象类 | 接口 |
1 | 关键字 | abstract class | interface |
2 | 组成 | 构造方法、普通方法、抽象方法、static方法、常量、变量 | 抽象方法、全局常量 |
3 | 子类使用 | class 子类 extends 抽象类 | class 子类 implements 接口,接口… |
4 | 关系 | 抽象类可以实现多个接口 | 接口不能继承抽象类,却可以继承多个父接口 |
5 | 权限 | 可以使用各种权限 | 只能使用public权限 |
6 | 限制 | 一个子类只能继承一个抽象类(单继承局限) | 没有单继承局限 |
7 | 子类 | 抽象类和接口必须有子类,子类必须实现所有抽象方法 | |
8 | 实例化 | 依靠子类的向上转型进行对象的实例化 |
经过比较可以发现,抽象类中支持的功能绝对要比接口更多,但是抽象类不能多继承,这就掩盖里抽象类的所有优点,即:当抽象类和接口都可以使用的时候,优先使用接口。
不成文的参考:
·在进行某些公共操作的时候一定要定义接口;
·有了接口就需要子类完善方法;
·如果是自己写的接口,那么绝对不要使用关键字new实例化接口,利用工厂设计模式。
---------------
我每一次回头,都感觉自己不够努力,所以我不再回头。
---------------