接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,
另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。
还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.
——————————————————————–
1.接口可以多重继承 ,抽象类不可以
2.接口定义方法,不给实现;而抽象类可以实现部分方法
3.接口中基本数据类型的数据成员,都默认为static和final,抽象类则不是
如果事先知道某种东西会成为基础类,
那么第一个选择就是把它变成一个接口。
只有在必须使用方法定义或者成员变量的时候,才应考虑采用抽象类。
——————————————————————–
定义的关键字:abstract class;interface;
组成:常量,变量,抽象方法,普通方法,构造方法;全局常量,抽象方法;
权限:可以是各种权限;只能是public;
关系:抽象类可以实现多个接口;接口不能实现抽象类;
使用:子类利用extends;子类利用implements实现接口;
涉及的设计模式:模板设计模式;工厂,代理设计模式;
局限性:一个子类只能继承一个抽象类;一个子类可以继承多个接口;
如果抽象类和接口都能实现的操作,一般选择接口,因为可以避免单继承局限;