is a 代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机.PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性.因此在用 Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类. has a 代表的是对象和它的成员的从属关系.同一种类的对象,通过它们的属性的不同值来区别.比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux.操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象. 再比如张三和李四都是人
组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合. 现实生活中:人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了.人和他的电脑是聚合关系. 可以说聚合是一种强组合的关系 class Hand{ } class Computer{ } 组合: class Person{ pr
继承:他是is-a的关系,指一个类继承另外一个类的功能 例如:public class A extends B { } 聚合:他是has-a 例如:public class A{ List<B> b} A可以有b 组合:他是contans-a(强聚合) public class A { B b} A一定有b
如果两个对象彼此有关系,就说他们是彼此相关联的.组合和聚合是面向对象中 的两种形式的关联.组合是一种比聚合更强力的关联.组合中,一个对象是另一 个的拥有者,而聚合则是指一个对象使用另一个对象.如果对象 A 是由对象 B 组合的,则 A 不存在的话,B 一定不存在,但是如果 A 对象聚合了一个对象 B, 则即使 A 不存在了,B 也可以单独存在.