java中的依赖和关联(组合和聚合)

1.依赖(Dependency)关系是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。
一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。 

class Car {   
    public static void run(){   
        System.out.println("汽车在奔跑");   
    }   
}   
     
class Driver {   
    //使用形参方式发生依赖关系   
    public void drive1(Car car){   
        car.run();   
    }   
    //使用局部变量发生依赖关系   
    public void drive2(){   
        Car car = new Car();   
        car.run();   
    }   
    //使用静态变量发生依赖关系   
    public void drive3(){   
        Car.run();   
    }   
}  
2.关联(Association)关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。

在Java语言中,关联关系一般使用成员变量来实现。 

class Driver {   
    //使用成员变量形式实现关联   
    Car mycar;   
    public void drive(){   
        mycar.run();   
    }   
    ...   
    //使用方法参数形式实现关联   
    public void drive(Car car){   
        car.run();   
    }   
}  

聚合

class Driver {   
    //使用成员变量形式实现聚合关系   
    Car mycar;   
    public void drive(){   
        mycar.run();   
    }   
}  

组合

public Driver(Car car){   
    mycar = car;   
}  

聚合与组合

1)聚合与组合都是一种结合关系,只是额外具有整体-部分的意涵。

2)部件的生命周期不同

聚合关系中,整件不会拥有部件的生命周期,所以整件删除时,部件不会被删除。再者,多个整件可以共享同一个部件。

组合关系中,整件拥有部件的生命周期,所以整件删除时,部件一定会跟着删除。而且,多个整件不可以同时间共享同一个部件。

3)聚合关系是"has-a"关系,组合关系是"contains-a"关系。


附:

java中的依赖和关联(组合和聚合)_第1张图片


你可能感兴趣的:(java基础)