Is -A 与Has - A

Is-a”与"Has-a"的关系。。。

"Is-a代表类之间或类与接口的继承关系表达这句话的一种方式:“这个东西是那个东西的一种”。例如:野马是一种马。(是一个)

如下图 比如猫是动物,狗也是动物,都继承了动物的共同特性,再用OO语言实现时,应将猫和狗定义成两种类,均继承动物类。猫和狗也具有这样的属性

Is -A 与Has - A_第1张图片

 

"Has-a"代表的对象和他成员的从属关系是引用而不是继承。同一种类的对象,通过它们的属性的不同值来区别。比如张三和李四都是人,但他们的名字不一样,可以以此区分这两个具体的人。名字应该作为人的成员变量。如果将名字叫“张三”的人和名字叫“李四”的人分别定义成两个类,均继承“人”这个类,显然是不合理的。再如比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。

下图给出一个实例进行说明

如电脑由主板,CpuAGu(显卡),AudioRam等硬件组成,它们可以各自可以单独存在,但是它们必须一起才能构成电脑,它们之间表达的是一种不很强的你我关系。

Is -A 与Has - A_第2张图片

你可能感兴趣的:(设计模式,OO,OO,D,D)