一 .语法上的区别
1.1 接口是一种特需的抽象类
1.2 java种可以实现多个接口
不能继承多个抽象类
1.3 抽象类中默认的变量是friendly 类型的,其值可以在子类中重新定义和赋值
接口中只有静态成员变量 public static final 其实现类中不能重新定义也不能赋值
1.4 抽象类中可以有非抽象的方法
接口中不能有实现的方法 默认就是public abstract
二 . 设计上的区别
2.1 抽象类是is a 的关系 就是继续 关系
接口 是like a 的关系
比如 防盗门 就可以这样理解 它是门(继承门这个抽象类) 它具有防盗的功能(它实现了防盗接口)
2.2 在抽象类中可以定义默认的行为
a. 有时候派生类实现相同的功能时,就不至于让所有的派生类都去实现一遍相同的东西,不利于维护,如果到时候要改的话就直接改默认方法就好了,比如参数变了。
b. 如果要增加一个方法,就直接到抽象类中增加,不至于 每个派生类都去写
三 . 说明
is a 继承关系
like a 实现关系
has a 对象和它的成员的从属关系 比如 pc 具有window 操作系统 或是 linux 操作系统