Java中的持有关系(组合关系)

第一种、假设老师类持有学生类,学生类持有宠物类,并为学生类添加一个遛狗的方法

public class Test2 {
    public static void main(String[] args) {
        Dog dog = new Dog("二哈","灰色");
        Student student = new Student("王小二",dog);
        Teacher teacher = new Teacher();
        teacher.name = "王老师";
        teacher.student = student;
        System.out.println(teacher.toString());
    }
}
class Teacher{
    public String name;//姓名
    public Student student;//老师持有学生

    @Override
    public String toString() {
        return "Teacher{" +
                "name='" + name + '\'' +
                ", student=" + student.name +  " "+ student.play() +
                '}';
    }

    //无参构造函数
    public Teacher(){

    }
    //有参构造函数
    public Teacher(String name, Student student) {
        this.name = name;
        this.student = student;
    }
}
class Student{
    public String name;//姓名
    public Dog dog;//学生持有宠物

    //构造函数
    public Student(String name, Dog dog) {
        this.name = name;
        this.dog = dog;
    }

    //遛狗的方法
    public String play(){
        return this.dog.toString();
    }
}
class Dog{
    public String name;//姓名
    public String color;//颜色

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                '}';
    }

    //构造函数
    public Dog(String name, String color) {
        this.name = name;
        this.color = color;
    }
}

第二种、假设有丈夫和妻子两个类,其中丈夫和妻子是一对一关系。

             特别注意:如果是相互持有的关系,每一个类中不能写全参的构造函数,将相互持有的对象采用对象.属性的方式进行给出。

public class Test1 {
    public static void main(String[] args) {
        Husband h = new Husband("张三","四川成都");
        Wife w = new Wife("赵燕","云南保定");
        h.wife = w;
        w.husband = h;
        System.out.println(h.toString());
        System.out.println(w.toString());
    }
}
//定义丈夫类
class Husband{
    public String name;
    public String address;
    public Wife wife;

    @Override
    public String toString() {
        return "丈夫{" +
                "姓名:'" + name + '\'' +
                ", 妻子:" + wife.name +
                ", 地址:'" + address + '\'' +
                '}';
    }

    public Husband(String name, String address){
        this.name = name;
        this.address = address;
    }
    public Husband(){

    }

}
//定义妻子类
class Wife{
    public String name;
    public String address;
    public Husband husband;

    @Override
    public String toString() {
        return "妻子{" +
                "姓名:'" + name + '\'' +
                ", 丈夫:" + husband.name +
                ", 地址:'" + address + '\'' +
                '}';
    }

    public Wife(String name, String address){
        this.name = name;
        this.address = address;
    }
}

版权声明:本文为qq_53218512原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。