本帖最后由 徘徊消逝中 于 2014-6-5 23:19 编辑
本来是想问这个问题的:一个类A的实例a以参数形式传递到另一个类B中,做为B的一个属性,那么如果类B实例化多个对象,且该属性都以类A的同一个实例a为参数,那么这许多的B类的实例是不是操作的是同一个属性资源,还是分别在B类的每一个实例中都重新创建新的属性。说起来比较拗口。
本来想问问大家了,后来自己测试了,不知道大家有没有其他的看法,或者更好的做法:
本测试不要计较逻辑,只是个简单的技术点的测试:
- package blog5;
- public class test {
- public static void main(String[] args) {
- Person p = new Person("张三",20);
-
- Classrom classromA = new Classrom(p, "李老师");
- Classrom classromB = new Classrom(p, "张老师");
- //输出原来的AB教室中学生情况
- System.out.println(classromA.getPerson().toString());
- System.out.println(classromB.getPerson().toString());
- //改变A教室中学生年龄
- classromA.getPerson().setAge(100);
- //查看B教室中学生年龄
- System.out.println(classromB.getPerson().toString());
- // 结果:B教室中学生年龄编程了100,所以AB教室中的学生对象是同一个对象p
- }
- }
- class Classrom{
-
- private Person p;
- private String teacher;
-
- public Classrom(Person p,String teacher) {
- this.p = p;
- this.teacher = teacher;
- }
- public Person getPerson() {
- return this.p;
- }
- }
- class Person{
- private String name;
- private int age;
-
- public Person(String name,int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- @Override
- public String toString() {
- return "name:" + name + " ,age:" + age;
- }
- }
复制代码
|