zoukankan      html  css  js  c++  java
  • 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();
    }

    }
    }

  • 相关阅读:
    csu 1513 Kick the ball! 搜索
    训练赛bug总结
    csu 1780 简单的图论问题? 搜索
    贪吃蛇
    hdu 1541 Stars 树状数组
    FZU 2092 收集水晶 BFS记忆化搜索
    [ An Ac a Day ^_^ ] UVALive 2035 The Monocycle BFS
    52. N皇后 II
    修改全局变量-global 修改外部嵌套函数中的变量 nonlocal
    安装glove 不报错
  • 原文地址:https://www.cnblogs.com/joyous-day/p/6490963.html
Copyright © 2011-2022 走看看