6.10.2自身关联结构
在进行类关联描述中,除了可以关联其他类之外,也可以实现自身关联的操作,l例如:现在假设一个人员会有一辆车,那么每个人员可能还有自己的子女,而其他 子女也可能有一辆车,这时候就可以利用自身关联的形式描述人员后代的关系。
范例:实现自身关联
public class Car124 {
private String name;
private double price;
private Person124 per;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Person124 getPer() {
return per;
}
public void setPer(Person124 per) {
this.per = per;
}
public Car124() {
}
public Car124(String name, double price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Car124 [品牌=" + name + ", 落地价=" + price + "]";
}
}
---------------------------------------------------------------------
public class Person124 {
private String name;
private int age;
private Car124 car;
private Person124 children[]; //一个人有多个孩子 自身关联
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Car124 getCar() { //获取人对应汽车信息
return car;
}
public void setCar(Car124 car) { //设置人与汽车关联
this.car = car;
}
public Person124[] getChildren() { //获取人对应孩子信息
return children;
}
public void setChildren(Person124[] children) { //设置人与孩子关联
this.children = children;
}
public Person124(String name, int age) {
this.name = name;
this.age = age;
}
public Person124() {
}
@Override
public String toString() {
return "Person124 [姓名=" + name + ", 年龄=" + age + "]";
}
}
-----------------------------------------------------------------------------------
public class Array124 {
public static void main(String[] args) {
Person124 per=new Person124("李雷",21); // 实例化Person124类对象
Person124 childA=new Person124("大鹏",6); //孩子(人)对象
Person124 childB=new Person124("大鸟",8); //孩子(人)对象
childA.setCar(new Car124("宝马",560000)); //匿名对象
childB.setCar(new Car124("奔驰",880000)); //匿名对象
per.setChildren(new Person124 [] {childA,childB});
Car124 car=new Car124("法拉利",1240000.00); //实例化对象
per.setCar(car); //一个人一辆车
car.setPer(per); //一辆车一个人
System.out.println(per.getCar().toString()); //通过人获取车的信息
System.out.println(car.getPer().toString()); //通过车获取拥有人信息
for(int x=0;x<per.getChildren().length;x++) {//获取孩子信息
System.out.println("\t"+per.getChildren()[x].toString());
System.out.println("\t\t"+per.getChildren()[x].getCar().toString());
}
}
}
Car124 [品牌=法拉利, 落地价=1240000.0]
Person124 [姓名=李雷, 年龄=21]
Person124 [姓名=大鹏, 年龄=6]
Car124 [品牌=宝马, 落地价=560000.0]
Person124 [姓名=大鸟, 年龄=8]
Car124 [品牌=奔驰, 落地价=880000.0]
在本程序中利用( private Person124 children[];),描述一个人拥有孩子的信息,这样就在Peson124内部定义了一个自身引用,并且结构与Penson124完全相同,于是孩子可以继续描述拥有的汽车或者后代的信息关联。