java 对象内容复制,JAVA语言:对象的复制(深复制和浅复制)

本文主要向大家介绍了JAVA语言:对象的复制(深复制和浅复制),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

1、浅复制表示复制目标对象本身,并不会复制目标对象的引用

2、深复制表示复制目标对象本身,并且复制目标对象的引用

3、对象复制的步骤:

3.1:实现Cloneable这个标志接口

3.2:重写Object类的clone方法,并将该方法访问修饰符改成Public

3.3:必须调用父类的clone方法,因为可以识别要复制对象的类型等 super.clone();

public class clone {

public static void main(String[] args) throws CloneNotSupportedException {

Student s1=new Student();

s1.setAge(20);

s1.setName(new Teacher());

Student s2=(Student)s1.clone();

//此行代码可以证明浅赋值 因为两个对象的地址一样

System.out.println(s1.getName()==s2.getName());

System.out.println("------------------------------------------");

Student2 s3=new Student2();

s3.setName(s1);

Student2 s4=(Student2)s3.clone();

//此行代码可以证明深赋值 因为两个对象的地址不一样

System.out.println(s4.getName()==s3.getName());

}

}

//对象的浅复制

class Student implements Cloneable{

private int age;

private Teacher tname;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public Teacher getName() {

return tname;

}

public void setName(Teacher name) {

this.tname = tname;

}

@Override

public Object clone() throws CloneNotSupportedException {

Object obj=super.clone();

return obj;

}

}

class Teacher{

}

class Student2 implements Cloneable{

private int age;

private Student tname;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public Student getName() {

return tname;

}

public void setName(Student name) {

this.tname = name;

}

@Override

public Object clone() throws CloneNotSupportedException {

Student2 obj=(Student2)super.clone();

obj.tname=(Student)this.tname.clone();

return obj;

}

}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值