接口抽象类区别
抽象类中可以包含普通方法和普通字段, 可以被子类直接使用(不必重写),
接口中不能包含普通方法, 子类必须重写所有的抽象方法.
No | 区别 | 抽象类(abstract) | 接口(interface) |
---|---|---|---|
1 | 结构组成 | 普通类+抽象方法 | 抽象方法+全局变量 |
2 | 权限 | 各种权限 | public |
3 | 子类使用 | extends继承抽象类 | implements实现接口 |
4 | 关系 | 一个抽象类可以实现多个接口 | 接口不能继承抽象类但是可以用extends继承多个父接口 |
5 | 子类限制 | 一个子类只能继承一个抽象类 | 一个子类可以实现多个接口 |
代码实例
例如:Animal 中包含一个 name 这样的属性, 这个属性在任何子类中都是存在的. 因此此
处的 Animal 只能作为一个抽象类, 而不应该成为一个接口.
class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
}