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

     }

    }

  • 相关阅读:
    url路由配置及渲染方式
    django类视图介绍与类视图装饰器
    什么是数据类型
    python代码的编写和运行
    python环境搭建
    python教程(目录)
    编程语言概念
    面向对象入门
    编程语言
    Tornado框架实现图形验证码功能
  • 原文地址:https://www.cnblogs.com/wantao/p/8543863.html
Copyright © 2020-2023  润新知