在面向对象的设计领域里,有很多设计思路,主要有三种:is-a、has-a、like-a。
这三种在java的类、接口、抽象类中很多体现,下面简述一下其定义。
如果A is-a B,那么B就是A的父类。
一个类完全包含另一个类的所有属性及行为。
例如PC机是计算机,工作站也是计算机,PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类。
如果A has a B,那么B就是A的组成部分。
同一种类的对象,通过它们的属性的不同值来区别。
例如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。
如果A like a B,那么B就是A的接口。
新类型有老类型的接口,但还包含其他函数,所以不能说它们完全相同。
例如一台手机可以说是一个微型计算机,但是手机的通讯功能显然不是计算机具备的行为,所以手机继承了计算机的特性,同时需要实现通讯功能,而通讯功能需要作为单独接口,而不是计算机的行为。
原文:https://www.cnblogs.com/jingqz/p/15252949.html