回答重点:
接口和抽象类在设计动机上有所不同。
接口的设计是 自上而下 的。我们知晓某一行为,于是基于这些行为的约束定义了接口,一些类需要有这些行为,因此实现对应的接口。
抽象类的设计是 自下而上 的。我们写了很多类,发现他们之间,有很多的代码可以复用,因此将公共逻辑封装成一个抽象类,减少代码冗余
自上而下 指的是先约定接口,再实现。
自下而上 指的是先有一些类,才抽象了共同父类。
接口和抽象类在设计动机上有所不同。
接口的设计是 自上而下 的。我们知晓某一行为,于是基于这些行为的约束定义了接口,一些类需要有这些行为,因此实现对应的接口。
抽象类的设计是 自下而上 的。我们写了很多类,发现他们之间,有很多的代码可以复用,因此将公共逻辑封装成一个抽象类,减少代码冗余
自上而下 指的是先约定接口,再实现。
自下而上 指的是先有一些类,才抽象了共同父类。