zoukankan      html  css  js  c++  java
  • java对象的深浅克隆

    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() ? "克隆对象的狗与原对象的狗为同一只狗"
        : "克隆对象的狗与原对象的狗为不同的狗");
      

     }

    }

  • 相关阅读:
    hdu1828(线段树——矩形周长并)
    hdu1255(线段树——矩形面积交)
    用jQuery获取到一个类名获取到的是一个数组 ,如果对数组中的每个进行相应的操作可以这样进行
    CSS3向外扩散的圆
    鼠标放上去图片会放大
    Django分页
    Django使用富文本编辑器
    Django日志配置
    Linux中的文件类型
    Linux压缩和解压缩
  • 原文地址:https://www.cnblogs.com/wantao/p/8543863.html
Copyright © 2011-2022 走看看