尚硅谷JavaSE基础
6.3.3 对象关联
1. 什么是对象关联
对象关联就是一个对象关联了另外一个对象, 前者拥有了后者, 是一种包含关系.
2. 为什么要关联对象
public void lesson(Computer com) { // 这个方法应该需要一台电脑才能上课
System.out.println("[" + this.name + "] 老师使用电脑[" + com.say() + "]在上课");
}
这个方法中老师对象要想上课, 需要通过参数传入一个对象. 方法结束后, 这个对象对于老师对象来说就会消失, 显然老师对象最好是应该完全拥有一个电脑对象, 这样再执行上课方法时,就不需要再传入对象, 而是使用自己拥有的对象, 甚至还可以再添加一些别的方法使用此对象.
3. 如何关联对象
在当前类中把要关联的对象作为属性即可.
也可以在构造器中添加参数为关联的对象赋值, 也可以添加对应的get/set方法,用以处理这个关联的对象
先写被关联的类
public class Computer { private double cpu; private int memory; public Computer() {} public Computer(double cpu, int memory) { this.cpu = cpu; this.memory = memory; } public void setCpu(double cpu) { this.cpu = cpu; } public double getCpu() { return cpu; } public void setMemory(int memory) { this.memory = memory; } public int getMemory() { return memory; } public String say() { return "CPU:" + cpu + "GHz, 内存:" + memory + "G"; } } |
在Teacher类中关联Computer类的对象
public class Teacher { private String name; private int age = 30; private String gender = "女"; // 对象关联, 把被关联的对象声明成属性 private Computer computer; // 可以通过构造器完成对关联对象的初始化 public Teacher(String name, int age, String gender, Computer computer) { this.name = name; this.age = age; this.gender = gender; this.computer = computer; }
// 同时应该再提供相应的get/set方法 public void setComputer(Computer computer) { this.computer = computer; }
public Computer getComputer() { return computer; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } public void setGender(String gender) { this.gender = gender; } public String getGender() { return gender; } // 在上课方法中, 不必再在每次调用时传参了. public void lesson() { System.out.println("[" + this.name + "] 老师使用电脑[" + computer.say() + "]在上课"); } public String say() { return "姓名:" + this.name + ",年龄:" + this.age + ",性别:" + this.gender; } } |
public class TeacherTest { public static void main(String[] args) { Computer com = new Computer(3.5, 4); // 要关联的对象先创建好 Teacher t = new Teacher("李四", 25, "女", com); // 通过构造器完成对象关联 t.lesson(); // 通过实参传递对象 // 以上代码打印输出为”[李四] 老师使用电脑[CPU:3.5GHz,内存:4G]在上课" } } |
4. 对象关联的作用
对象关联的作用非常广泛, 当一个类完成某种功能时, 有的时候如果有现成的其他对象可以直接使用, 并且在本类中要多次多方法中使用同一个功能时, 对象关联更显得必要. 这样使得对象之间的关系更加紧密.