• Clone


    浅克隆

    被克隆对象的所有变量都含有与原来的对象相同的值,

    而所有的对其他对象的引用仍然指向

    原来的对象。换言之,浅克隆仅仅克隆所考虑的对象,而不克隆它所引用的对象。

    package fun;
    public class b extends a implements Cloneable {
    public static void main(String[] args) throws CloneNotSupportedException {
    b b=new b();
    b b1=(fun.b) b.clone();//调用clone的方法,返回Object类,需要强转
    b1.fun();
    b.fun();
    }

    private void fun() {
    System.out.println("123");
    }
    @Override//复写clone的方法
    protected Object clone() throws CloneNotSupportedException {
    return super.clone();
    }
    }

    深克隆

    被克隆对象的所有变量都含有与原来的对象相同的值,

    除去那些引用其他对象的变量。

    那些

    引用其他对象的变量将指向被克隆过的新对象,

    而不再是原有的那些被引用的对象。

    换言之,

    深克隆把要克隆的对象所引用的对象都克隆了一遍。

    package Test;

    public class Pet implements Cloneable{
    @Override
    protected Object clone() throws CloneNotSupportedException {
    // TODO Auto-generated method stub
    return super.clone();
    }

    }
    class zoo implements Cloneable{
    private String name;
    private Pet p=new Pet();
    public zoo(String name) {
    super();
    this.name = name;
    }
    public zoo() {
    super();

    }
    @Override
    protected Object clone() throws CloneNotSupportedException {
    zoo z= (zoo) this.clone();
    Pet p1= (Pet) z.p.clone();
    return z;
    }
    public static void main(String[] args) {
    try {
    zoo z= new zoo();
    z.clone();
    } catch (CloneNotSupportedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }
    }

  • 相关阅读:
    Grakn Forces 2020 I. Bitwise Magic
    October Challenge 2020 Division 1
    杂题
    杂题
    杂题
    hdu 6868
    Codeforces Round #673 (Div. 1)
    杂题
    2019 ICPC World Finals K
    【CSP2019】括号树 题解(递推+链表)
  • 原文地址:https://www.cnblogs.com/joyous-day/p/6490963.html
Copyright © 2020-2023  润新知