1. 程式人生 > 資訊 >60 支莫代爾:簡雲男士背心 2 件 29.9 元(立減 40 元)

60 支莫代爾:簡雲男士背心 2 件 29.9 元(立減 40 元)

淺拷貝:
將被拷貝的例項物件,複製一份給到新的物件,從此複製之後的物件和原物件就是兩個相互獨立的物件,但是淺拷貝中的引用資料型別是沒有被拷貝的,用的還是原物件中的引用資料型別的物件
深拷貝:
和淺拷貝功能一樣,都是複製物件,只是深拷貝的複製更加徹底,將引用資料型別的資料也進行了拷貝,並且在堆記憶體中又開闢了一個空間,專門存放這些引用資料型別,之後複製體中的引用型別物件的修改和原物件不再聯絡。
程式碼實現深拷貝:
package com.hlxd.prototype1;

/**

  • @author syq

  • @date 2022年05月11日 14:38
    */
    public class Runne implements Cloneable{
    private String name;
    private int age;
    private Test test=new Test();

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public int getAge() {
    return age;
    }

    public void setAge(int age) {
    this.age = age;
    }

    public Test getTest() {
    return test;
    }

    public void setTest(Test test) {
    this.test = test;
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
    Runne clone = (Runne) super.clone();
    clone.test= (Test) test.clone();

     return clone;
    

    }
    }

package com.hlxd.prototype1;

/**

  • @author syq
  • @date 2022年05月11日 14:39
    */
    public class Test implements Cloneable{
    @Override
    protected Object clone() throws CloneNotSupportedException {
    return super.clone();
    }
    }

/**
*深拷貝和淺拷貝:

  • 淺拷貝:
  • 將被拷貝的例項物件,複製一份給到新的物件,從此複製之後的物件和原物件就是兩個相互獨立的物件,
  • 但是淺拷貝中的引用資料型別是沒有被拷貝的,用的還是原物件中的引用資料型別的物件
  • 深拷貝:
  • 和淺拷貝功能一樣,都是複製物件,只是深拷貝的複製更加徹底,將引用資料型別的資料也進行了拷貝,
  • 並且在堆記憶體中又開闢了一個空間,專門存放這些引用資料型別,之後複製體中的引用型別物件的修改
  • 和原物件不再聯絡。
    */
    public class Demo {

/**

  • @param args
  • @throws CloneNotSupportedException
    */
    public static void main(String[] args) throws CloneNotSupportedException {
    Runne resume1 = new Runne();
    Runne resume2 = (Runne)resume1.clone();
    System.out.println(resume1.hashCode() + " " + resume2.hashCode());
    System.out.println(resume1.getTest().hashCode() + " " + resume2.getTest().hashCode());
    }

}
淺拷貝較為簡單,只需要將Test設定為普通類,將Runne類中的test的克隆方法刪除即可。