博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java对象的深浅克隆
阅读量:5057 次
发布时间:2019-06-12

本文共 2196 字,大约阅读时间需要 7 分钟。

package CloneTest;

class Dog implements Cloneable{

 private String dname;
 private Integer dage;
 public Dog clone() throws CloneNotSupportedException{
  Dog cloned=(Dog) super.clone();
  return cloned;
  
 }

 public String getDname() {

  return dname;
 }

 public void setDname(String dname) {

  this.dname = dname;
 }

 public Integer getDage() {

  return dage;
 }

 public void setDage(Integer dage) {

  this.dage = dage;
 }

 @Override

 public String toString() {
  return "Dog [dname=" + dname + ", dage=" + dage + "]";
 }

 public Dog(String dname, Integer dage) {

  super();
  this.dname = dname;
  this.dage = dage;
 }

}

class Person implements Cloneable {

 private String name;
 private Integer age;
 private Dog dog;

 public Person(String name, Integer age, Dog dog) {

  this.name = name;
  this.age = age;
  this.dog = dog;
 }

 public Person clone() throws CloneNotSupportedException {

  Person cloned = (Person) super.clone();
  return cloned;

 }

 public String getName() {

  return name;
 }

 public void setName(String name) {

  this.name = name;
 }

 public Integer getAge() {

  return age;
 }

 public void setAge(Integer age) {

  this.age = age;
 }

 @Override

 public String toString() {
  return "Person [name=" + name + ", age=" + age + ", dog=" + dog + "]";
 }

 public Dog getDog() {

  return dog;
 }

 public void setDog(Dog dog) {

  this.dog = dog;
 }

}

public class CloneTest {

 public static void main(String[] args) throws CloneNotSupportedException {
  Dog dog1 = new Dog("杨狗", 5);
  Person p1 = new Person("wantao", 20, dog1);
  System.out.println("原对象" + p1.getName() + "他的狗为"
    + p1.getDog().getDname());
  System.out.println("第一次进行克隆:");
  Person p2 = p1.clone();
  System.out.println("克隆对象" + p2.getName() + "克隆狗为"
    + p2.getDog().getDname());
  System.out.println(p1 == p2 ? "克隆对象与原对象为同一个对象" : "克隆对象与原对象为不同对象");
  System.out.println(p1.getDog() == p2.getDog() ? "克隆对象的狗与原对象的狗为同一只狗"
    : "克隆对象的狗与原对象的狗为不同的狗");
  System.out.println("第二次进行克隆");
  Person p3=p1.clone();
  p3.setDog(p1.getDog().clone());
  System.out.println("克隆对象" + p3.getName() + "克隆狗为"
    + p3.getDog().getDname());
  System.out.println(p1 == p3 ? "克隆对象与原对象为同一个对象" : "克隆对象与原对象为不同对象");
  System.out.println(p1.getDog() == p3.getDog() ? "克隆对象的狗与原对象的狗为同一只狗"
    : "克隆对象的狗与原对象的狗为不同的狗");
  

 }

}

 

 

转载于:https://www.cnblogs.com/wantao/p/8543863.html

你可能感兴趣的文章
centos6.8下安装matlab2009(图片转帖)
查看>>
Mongo自动备份
查看>>
求助大神!怎样批量删除数据库表中某个字段中同样的一段字符!
查看>>
VMWARE虚拟机无法访问的三种方法分析
查看>>
enq: SQ - contention
查看>>
cer证书签名验证
查看>>
面向对象设计
查看>>
ant 安装
查看>>
新手Python第一天(接触)
查看>>
vue路由动态加载
查看>>
【原】UIWebView加载本地pdf、doc等文件
查看>>
iOS中ARC内部原理
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
你不得不了解的应用容器引擎---Docker
查看>>
easyui datagrid 弹出页面会出现两个上下滚动条处理办法!
查看>>
迭代器和生成器
查看>>
MYSQL分区表功能测试简析
查看>>
codevs 1080 线段树练习
查看>>
JS模块化库seajs体验
查看>>