尚硅谷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. 对象关联的作用

   对象关联的作用非常广泛, 当一个类完成某种功能时, 有的时候如果有现成的其他对象可以直接使用, 并且在本类中要多次多方法中使用同一个功能时, 对象关联更显得必要. 这样使得对象之间的关系更加紧密.