has a
关联关系:聚合
凡是能够使用 has a 来描述的,统一以属性的方式存在
例如 Customer has a FoodMenu(顾客有一个食物菜单)
is a
继承关系:继承
凡是满足is a的表达式都可以设置为继承
例如 Cat is a Animal(猫是一种动物)
is like a
实现关系:接口
满足 is like a 的表达式也是一种继承
实现关系通常是:类实现接口
但是在继承中,仅覆盖了父类方法即为Is-a;若在覆盖父类方法基础上有新增方法,则为Is-like-a。
例子:
1.假设你确定两件对象之间是is-a的关系,那么此时你应该使用继承。比方菱形、圆形和方形都是形状的一种。那么他们都应该从形状类继承。
2.假设你确定两件对象之间是has-a的关系,那么此时你应该使用聚合。比方电脑是由显示器、CPU、硬盘等组成的。那么你应该把显示器、CPU、硬盘这些类聚合成电脑类。
3.假设你确定两件对象之间是like-a的关系,那么此时你应该使用组合。比方空调继承于制冷机,但它同一时候有加热功能。那么你应该把让空调继承制冷机类,并实现加热接口