克隆对象
使用方法克隆一个对象,并且属性相同。
思路:
1.创建一个类,定义属性(要克隆的对象类型)
2.再创建一个类,定义一个克隆的方法:形参为接受对象,返回值为返回对象类型,方法体创建一个对象并且将接受的对象属性赋值给在方法体中创建的对象
3.在主方法中创建要克隆的对象,并且再创建一个有克隆方法的对象。使用有克隆方法的对象调用方法,并且将返回值赋值给克隆对象名
代码:
public class Method4{
public static void main(String[] args) {
Person p = new Person();
p.name = "jack";
p.age = 54;
Mooly m = new Mooly();
Person p2 = m.copyPerson(p);
System.out.println(p == p2);
}
}
class Mooly{
public Person copyPerson(Person p){//克隆方法
Person p2 = new Person();
p2.name = p.name;
p2.age = p.age;
return p2;
}
}
class Person{//要被克隆的对象类型
String name;
int age;
}
在内存中
1.将各项类加载好
2.开辟main栈实例化Person 名字为p 进行赋值
3.实例化Mooly,调用copyPerson方法并且被main中的p2接收(p2指向方法开辟的空间)
首先将main中的对象p地址给到copy方法中的p,然后在堆中再开辟一个空间(对象)指向copy方法栈中p2,然后根据传递的地址找到p对象依次赋值给copy中的p2,最后返回值是指向p2的地址.接着回到main栈中将返回的地址给main栈中的p2,克隆完成
内存图: