引用传递在开发与涉及当中是最为重要的技术组成。
1、类关联结构
简言之,将两个独立的类进行关联,即,人是一个单独的人,车是一个单独的类,那么当人有了车后,就可以在人的类中调取车的信息;车有了车主后,那么可以通过车的信息找到车主的信息。
实现代码如下:
package com.lxh.test1;
class Person {
private String name;
private Integer age;
private String address;
private Car car;
public Person(String name, Integer age, String address) {
super();
this.name = name;
this.age = age;
this.address = address;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";
}
}
class Car {
private String carName;
private Integer carNum;
private Person person;
public Car(String carName, Integer carNum) {
super();
this.carName = carName;
this.carNum = carNum;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public Integer getCarNum() {
return carNum;
}
public void setCarNum(Integer carNum) {
this.carNum = carNum;
}
@Override
public String toString() {
return "Car [carName=" + carName + ", carNum=" + carNum + "]";
}
}
public class demo1 {
public static void main(String[] args) {
// 1、先各自声明对象
Person person = new Person("大王", 30, "北京");
Car car = new Car("宾利", 88888);
// 2、然后设置关系
person.setCar(car);
System.out.println(person);
System.out.println(person.getCar());
car.setPerson(person);
System.out.println(car.getPerson());
}
}
2、自身关联
自身关联的类指的是一个类可以在成员属性的位置引用本身类。
package com.lxh.test1;
class Person {
private String name;
private Integer age;
private String address;
private Car car;
private Person child[];// 一个人会有多个孩纸
public Person(String name, Integer age, String address) {
super();
this.name = name;
this.age = age;
this.address = address;
}
public Person[] getChild() {
return child;
}
public void setChild(Person[] child) {
this.child = child;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";
}
}
class Car {
private String carName;
private Integer carNum;
private Person person;
public Car(String carName, Integer carNum) {
super();
this.carName = carName;
this.carNum = carNum;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public Integer getCarNum() {
return carNum;
}
public void setCarNum(Integer carNum) {
this.carNum = carNum;
}
@Override
public String toString() {
return "Car [carName=" + carName + ", carNum=" + carNum + "]";
}
}
public class demo1 {
public static void main(String[] args) {
// 1、先各自声明对象
Person person = new Person("大王", 30, "北京");
Person childA = new Person("小王1", 12, "北京");
Person childB = new Person("小王2", 11, "北京");
// 一个人有多个孩子
// 每个孩纸有车
childA.setCar(new Car("bmw", 6666));
childB.setCar(new Car("bmw2", 7777));
person.setChild(new Person[] { childA, childB });
Car car = new Car("宾利", 88888);
// 2、然后设置关系
person.setCar(car);
car.setPerson(person);
System.out.println(car.getPerson().toString());
System.out.println(person.getCar().toString());
// 根据人找到所有的孩纸以及孩纸对应的汽车
for (int x = 0; x < person.getChild().length; x++) {
// 得到大王的孩纸信息
System.out.println(person.getChild()[x]);
// 得到大王的孩纸拥有的车的信息
System.out.println("\t" + person.getChild()[x].getCar());
}
}
}
3、合成设计模式
描述电脑组成的类。电脑的组成有显示器和主机,而主机需要一些硬件,具体设计如下:
class 电脑 {
private 显示器 对象数组[];// 一个电脑一个有多个显示器
private 主机 对象;
}
class 显示器 {
}
class 主机 {
private 主板 对象1;
private 鼠标 对象2;
private 键盘 对象3;
}
class 主板 {
private 内存 对象数组4[];
private CPU 对象数组3[];
private 显卡 对象数组2[];
private 硬盘 对象数组1[];
}
class 内存 {
}
class 键盘 {
}
class 鼠标 {
}
class CPU {
}
class 显卡 {
}
class 硬盘 {
}