抽象类和接口的区别

 

接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.

——————————————————————–

1.接口可以多重继承 ,抽象类不可以

2.接口定义方法,不给实现;而抽象类可以实现部分方法

3.接口中基本数据类型的数据成员,都默认为static和final,抽象类则不是

如果事先知道某种东西会成为基础类,

那么第一个选择就是把它变成一个接口。

只有在必须使用方法定义或者成员变量的时候,才应考虑采用抽象类。

——————————————————————–

定义的关键字:abstract class;interface;

组成:常量,变量,抽象方法,普通方法,构造方法;全局常量,抽象方法;

权限:可以是各种权限;只能是public;

关系:抽象类可以实现多个接口;接口不能实现抽象类;

使用:子类利用extends;子类利用implements实现接口;

涉及的设计模式:模板设计模式;工厂,代理设计模式;

局限性:一个子类只能继承一个抽象类;一个子类可以继承多个接口;

如果抽象类和接口都能实现的操作,一般选择接口,因为可以避免单继承局限;

原文地址:https://www.cnblogs.com/weigy/p/12670074.html