PS:接口定义了这是一个什么东西,有什么特点。而抽象是比接口稍微低一点的东西,它把这一类的东西的共同特点进行了总结。

接口:

接口只给出一个事物的特点和行为,不给出具体。

接口的作用:

    1.接口是对可插入行的保证。

    2.接口把软件的内部和外部进行耦合。

    3.标明类型等级结构。混合类型。

JAVA接口的常见用法:

    1.单方法接口

    2.标识接口(没有任何方法,只起到一个类型标识的作用)

    3.常亮接口(子类可以直接使用接口中的数据)

PS:接口只表示一种类型,不表示具体。

 

抽象:

抽象类的作用:

    1.具体类不是用来继承的。(重构的建议:如果有俩个具体类的继承关系,可以建立一个抽象类,把共同的行为放到抽象类中。)

    2.抽象类中来放入共同代码。(PS:具体放入多少共同代码,需要看这个抽象类的层级有多高)

    3.抽象类中要尽可能的放入少的数据。(数据如果不在父类中被使用,也会消耗空间)

基于抽象的模式和原则:

    1.针对抽象编程而不要依赖于具体——依赖倒置的原则(PS:还是要看需要依赖到哪个抽象层级)

    2.正确使用继承。(搞清楚is a 和 has a的区别)。如果确实不是继承关系,可以使用聚合来进行解耦。

 

什么时候使用继承;

    1.当时is a的关系而不是has a的关系时

    2.在分类学上有意义的时候

    3.子类来扩展父类的功能,而不是大量的对父类功能进行替换的时候。