一、抽象类与接口的异同
- 相同点:
① 抽象类和接口都不能被实例化
② 抽象类和接口都可以定义抽象方法,子类/实现类必须覆写这些抽象方法
- 不同点:
① 抽象类有构造方法,接口没有构造方法
② 抽象类可以包含普通方法,接口中只能是public abstract修饰抽象方法(Java8之后可以)
③ 抽象类只能单继承,接口可以多继承
④ 抽象类可以定义各种类型的成员变量,接口中只能是public static final修饰的静态常量
二、使用场景
- 抽象类:想约束子类具有共同的行为,又想拥有缺省的方法,又能拥有实例变量,但又不在乎实现的方法。
- 接口:想实现多重继承