对象与对象的关系

举例: 学校: 属性:学校名、学生 方法:set和get方法

            学生: 属性:姓名

           目的:让学校拥有学生,了解JVM中存放的是什么

public class TestSchool {
public static void main(String[] args) {
School school = new School();
school.setSchoolName("魔法学院");
// 此时执行过程是当构造一个学校对象时(此时没有学生,只有学校名),在栈内存中
// 分配了一个空间,空间地址假设是8080,里面存放的是一个指向常量池的地址,假设是6070,
// 这个常量池地址存放的是我们定义的"魔法学院",而栈内存中的
// 变量名school的地址假设是1010,它里面存放的是那么new出来的堆内存中的空间地址。
// 当我们创建了一个学生类,让学校拥有学生这个属性,我们继续往下分析
// 先实例化一个学生
Student student = new Student();
// 因为学生姓名这个属性我们没有包装,所以随便更改名字,这不是重点,内存中的分析和上面一样
student.studentName = "张三";
// 这里我们把造出来的学生给了魔法学院
school.setStudent(student);
// 然后打印出这个学生,输出的是这个学生在栈内存中的变量名地址,因为new出来的学校里的学生
// 在堆内存空间中存的就是一个地址,一个学生(student)在栈内存中的变量名地址,所以打印出来的是这个地址。

System.out.println(school.getStudent());//输出结果:com.woniuxy.oopDemo03.Student@7852e922
// 如果我们想打印出学生的名字,那就要利用栈内存中的student存的new的对象的地址(8050)来找到他的名字

}
}



public class School {
String schoolName;
Student student;

public Student getStudent() {
return student;
}

public void setStudent(Student student) {
this.student = student;
}

public String getSchoolName() {
return schoolName;
}

public void setSchoolName(String schoolName) {
this.schoolName = schoolName;
}

}

 

 

public class Student {
String studentName;

}

猜你喜欢

转载自www.cnblogs.com/19322li/p/10602911.html