ITPub博客

首页 > Linux操作系统 > Linux操作系统 > is-a和has-a的区别

is-a和has-a的区别

原创 Linux操作系统 作者:huangbin7097 时间:2013-09-05 16:00:46 0 删除 编辑

is-a和has-a的区别  

2012-08-18 17:21:42|  分类: 小点儿|字号 订阅

is-a”代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机。PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用 Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类。

 
“has-a”代表的是对象和它的成员的从属关系。同一种类的对象,通过它们的属性的不同值来区别。比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。 

Is-a 的意识是如果A是B,那么B就是A的基类。比如:等边三角形是使是三角形,那么,三角形就是等边三角形的基类。
       has-a 是如果A中有B,那么,B就是A的组成部分 

如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。
如果你确定两件对象之间是has-a的关系,那么此时你应该使用聚合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26851211/viewspace-772227/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Monitor监控系统
请登录后发表评论 登录
全部评论

注册时间:2012-04-04

  • 博文量
    59
  • 访问量
    56939