A use-a B 依赖(依赖)
    一个类的方法中使用到了另外一个类的对象

    屠夫 杀 猪 农民 养 猪
    一个类 屠夫 一个类 农民
    他可以做一件事 杀猪 他可以养猪
    需要一头猪

    不是整体和部分的关系 是因为某一件事产生了关系
    临时组合在一起 这件事一旦完成关系随即解散

    设计类的关系遵循的原则:高内聚低耦合
    耦合度: 紧密程度 继承(实现)>包含>依赖

    1. package rely;
    2. public class Farmer {
    3. //农夫养猪
    4. //参数--->养几个月 返回值--->是一头猪
    5. public Pig feedPig(int month){
    6. Pig pig = new Pig("小花");//依赖--->在农民的方法中用到了猪这个对象
    7. pig.grow(month);
    8. return pig;
    9. }
    10. }
    1. package rely;
    2. public class Butcher {//描述屠夫的
    3. //属性
    4. //方法
    5. public void killPig(Pig pig){
    6. //描述屠夫杀猪的方法 需要提供一头猪
    7. System.out.println("屠夫杀猪了");
    8. String pigName = pig.getName();
    9. int pigWeight = pig.getWeight();
    10. System.out.println(pigName+"的体重为"+pigWeight);
    11. pig.beKilled();
    12. }
    13. }
    1. package rely;
    2. public class Pig {//描述猪的
    3. //属性
    4. private String name;//猪的编号 名字
    5. private int weight = 20;//体重
    6. //构造方法
    7. public Pig(){}
    8. public Pig(String name){
    9. this.name = name;
    10. }
    11. //方法
    12. public void beKilled(){
    13. System.out.println(this.name+"被杀了");
    14. }
    15. public void grow(int month){
    16. //猪长肉
    17. //每个月涨到前一个月的两倍
    18. //返回值 可以不设置 可以另外设计一个方法专门用来告知体重的
    19. //将长肉和告知体重这两件事分开写 可以增强代码的复用性
    20. for(int i = 1;i<=month;i++){
    21. this.weight *= 2;
    22. }
    23. }
    24. public int getWeight(){
    25. //告知体重
    26. return this.weight;
    27. }
    28. public String getName(){
    29. //猪的名字
    30. return this.name;
    31. }
    32. }
    1. package rely;
    2. public class RunMain {
    3. public static void main(String[] args){
    4. //创建农夫对象
    5. Farmer farmer = new Farmer();
    6. //农夫养猪
    7. Pig pig = farmer.feedPig(5);
    8. //创建屠夫对象
    9. Butcher butcher = new Butcher();
    10. //屠夫杀猪
    11. butcher.killPig(pig);
    12. }
    13. }