类与类之间的关系
原创
©著作权归作者所有:来自51CTO博客作者wx63086371c7e9c的原创作品,请联系作者获取转载授权,否则将追究法律责任
共四种:
(1)关联(Association)
两个独立实例存在对应关系,如客户和订单,公司和员工。
实例变量来实现。
代码:
public class Company{
private Employee employee;
public Employee getEmployee(){
return employee;
}
public void setEmployee(Employee employee){
this.employee=employee;
}
//公司运作
public void run(){
employee.startWorking();
}
}
(2)聚合(Aggregation)
较强的关联关系,强调的是整体和部分
实例变量来实现这样关系的。
聚合和组合(composition)的区别
举一个简单的例子:
一个图书馆可以有十万本书,也可以一本也没有。但空的图书馆还是图书馆。这是聚合
一个车(我们平常能看到的普通的交通工具车)有轮子,有的车是四轮子的,有的车是三轮的,自行车是二轮的,还有独轮车,但车至少要有一个轮子,不然就不是车。这是组合关系。
代码:
public class Computer{
private CPU cpu;
public CPU getCPU(){
return cpu;
}
public void setCPU(CPU cpu){
this.cpu=cpu;
}
//开启电脑
public void start(){
//cpu运作
cpu.run();
}
(3)泛化(Generalization)
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系
具体表现:父类 父类实例=new 子类()
代码:
class Animal{}
class Tiger extends Animal{}
public class Test {
public void test()
{
Animal a=new Tiger();
}
}
(4) 依赖(Dependency)
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时.
局部变量,方法的参数,以及对静态方法的调用。
代码:
public class Person{
/** 拧螺丝 */
public void screw(Screwdriver screwdriver){
screwdriver.screw();
}
}