类关联设计
比如一个人,他除了自己人的属性,他还可以有宠物猫,猫也有自己的属性,那么他们就是两个有关联的对象。
将猫当作人的一个属性来设计:
//Dog类
public class Dog {
private String Name;
private Integer age;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Dog(){
}
public Dog(String name,Integer age){
this.age=age;
this.Name=name;
}
@Override
public String toString() {
return "Cat{" +
"Name='" + Name + '\'' +
", age=" + age +
'}';
}
}
//Person类
import java.time.Period;
import java.util.Arrays;
public class Person {
private Integer age;
private String name;
private Dog[] dog;
public Person(){
}
public Person(String name,Integer age){
this.age=age;
this.name=name;
}
public void speak(){
System.out.println("人能说话");
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Dog[] getDog() {
return dog;
}
public void setDog(Dog[] dog) {
this.dog = dog;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
", dog=" + Arrays.toString(dog) +
'}';
}
}
//测试代码
Person person = new Person("张三",18);
Dog dog1 = new Dog("小狗1号",2);
Dog dog2 = new Dog("小狗2号",3);
person.setDog(new Dog[]{dog1,dog2});
System.out.println(person);
System.out.println(dog1);
System.out.println(dog2);
就是先创建子类对象和父类对象除了子类之外的元素,然后利用父类的set方法结合匿名对象方法将子类对象的地址传递过去。
自身关联
刚才的例子除了人可以有猫之外,还可能会有孩子,也是Person对象。这就是自身关联,和类关联一样的操作。Person类中定义private Person[] person;并设置setter,getter。
然后测试为:
Person person1 = new Person("张大三",9);
Person person2 = new Person("张小三",2);
person.setPeoples(new Person[]{person1,person2});
System.out.println(person);
参考文献
阿里云开发者社区