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.子类来扩展父类的功能,而不是大量的对父类功能进行替换的时候。