抽象类: 没有足够的信息来描述这个类而需要其他类来支持他 , 这样的类为抽象类.
特点介绍:
- 抽象类中可以有变量 , 可以有方法 .
- 抽象的出发点是为了继承.(所以一般叶子节点是更具体的实现类)
- 不能实例化
- 抽象方法必须由子类来写
- 有抽象方法就必须为抽象类
- 可以不包含抽象方法
- 子类的抽象方法不能与父类相同
- 一个类不能既是抽象的又是final的
- 一个方法不能既是抽象的又是private,static,final或者native的
接口: 比抽象更加抽象(不能new) ,他是类与类之间的协议 , 提供的只有定义没有实现.
特点介绍:
- 实现它必须实现所有方法
- 一个类可以实现多个接口
- 是对不能多继承的补充
- 接口的所有方法默认为public的
- 接口可以定义成员变量 ,但必须是不可变的量.public static final (可通过类名直接访问)
- 可以使用instanceOf 验证是否实现了某个接口 obj instanceof Comparable
- 实现多接口时请注意方法同名问题
接口是从上而下设计出来的 , 抽象类是从下向上抽象出来的.
举例如下:
接口
对类抽象 , 飞机会飞 , 野鸡会飞 , 专门对于飞这个行为就可以编写一个接口 ,有实现类去实现自己的具体飞的行为.
抽象类
对行为抽象, 首先有狗,还有猫 , 有了猫和狗就可以抽象出来动物这个类.
参考博客:
http://blog.youkuaiyun.com/qq_35101189/article/details/58065040