【死记硬背】
1 接口和抽象类都不能够实例化,但可以定义接口和抽象类的引用。
2 接口使用interface,抽象类使用abstract class。
3 接口的成员都是public的,而抽象的成员可以是public、protected、default和private的。
4 接口只能做方法的声明,抽象类可以做方法的声明,也可以做方法的实现。
5 接口里定义的只能是公共的静态的常量,而抽象类中的变量是普通的变量。
6 接口主要抽象功能,而抽象类主要用来抽象类别。
7 接口没有构造器,而抽象类有构造器。
【答案解析】
接口设计的目的是对类的行为进行约束,它提供了一种机制,要求接口的不同实现类具有相同的行为,它只约束行为的有无,但是对具体的实现没有限制。接口表达的是一种is a的关系。
抽象类设计的目的是代码的复用,公共的部分放到父类中实现,而不同的部分交由子类去实现,抽象类表达的是一种like a的关系。
使用场景:当关注一个事物本质的时候,用抽象类。当关注一个操作的时候,用接口。