• 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();
    }

    }
    }

  • 相关阅读:
    doT.js——前端javascript模板引擎问题备忘录
    (转)regex类(个人理解)
    ajax提交表单、ajax实现文件上传
    SQL添加表字段
    Elasticsearch使用总结
    有一张表里面有上百万的数据,在做查询的时候,如何优化?从数据库端,java端和查询语句上回答
    sql语句的字段转成Date
    Mybatis 示例之 foreach
    Eclipse不编译解决方案
    Java使用RSA加密解密及签名校验
  • 原文地址:https://www.cnblogs.com/joyous-day/p/6490963.html
Copyright © 2020-2023  润新知