is-a表示的是属于得关系。比如兔子属于一种动物(继承关系)。has-a表示组合,包含关系。比如兔子包含有腿,头等组件;就不能说兔子腿是属于一种兔子(不能说是继承关系)假设有两个类:Computer和Employee。明显地,这两个类之间不存在"is a"的关系,即Employee不是计算机,它们之间没有继承关系的必要。因此不可能产生代码重用性。但这两个类之间是"has a"关系,即是支持的关系。例如,Employee"has a"Computer。明显地是一种支持关系。这种支持关系落实到代码中,就是在Employee中创建Computer的对象,调用其方法,到达完成某种运算和操作的目的。Employee和Manager 类存在的则是"is a"关系,即Manager是Employee。它们之间存在共性,或者共同的属性。Manager是Employee的具体化;Employee是Manager的概括和抽象。概括性和抽象性的类,如Employee,在继承中则定义为超类。具体或代表对象特性的类,如Manager,则定义为子类。如果这是一个用来计算雇员工资的程序,那么在超类Employee中,我们应当包括所有子类都应该具有的、与计算工资有关的数据,例如name、employeeID、jobTitle、seniority、baseSalary以及用来计算基本工资部分的方法,如baseSalary()等。在Manager这个子类中,我们不仅继承Employee的所有数据和方法,还增加针对Manager的新的数据,如是否董事会成员boardMember、职务补贴merit等,因为除基本工资的计算之外,这些都影响到具有经理职务雇员的收入。对两个类之间"is a"或是"has a"关系的分析,有助于我们确定它们之间是否存在继承关系,避免设计上的错误,因而达到提高代码重用性的目的
参考:http://hi.baidu.com/282535629/blog/item/023f4ec36a15105fb319a85d.html
参考:http://hi.baidu.com/282535629/blog/item/023f4ec36a15105fb319a85d.html
解决方案 »
- 关于itext里demo中一些问题
- Java中的那些控件如何才能更好的控制啊?(比如说,JLabel,JButton, 文体框等啊)急啊!
- 求助:怎么读取指定IP的mib库,实现set,get,getnext等操作 完全没有思路 大哥大姐帮帮小弟吧
- 求救:关于Swing的前一步,后一步,复制,粘贴,剪切,删除操作的源代码.
- 请问现在有没有UNIX下通过Java访问MS SQL Server的方法?
- 使用JFC需要那些另外的设置
- 论程序员的横向和竖向发展?
- 哪位大虾能告诉我unicode中中文段的值?
- jswdk怎样设置虚拟目录,因为两个实际目录不在同一个逻辑盘上
- 浅谈java线程的notify()和wait()
- 类在内存中的大小
- 关于等待多线程结束的问题
has a 表示 组合楼主可以找一本关于 面向对象的书看看
如:
class 动物{
..
}
clsss 狗 extends 动物 {
...
}
狗 小白=new 狗();//小白‘is a’狗;
'has a'说明从属关系;
class 人{
public 狗 小白;
...
}
人 浪人=new 人();
浪人.小白=new 狗();//浪人‘has a’狗(小白);
is-a 是完整的继承,也就是子类和父类完全一样
has-a 是子类继承父类,并进行了扩展。
楼猪 has a 鼻子