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

    }
    }

  • 相关阅读:
    Halcon图像分割
    Halcon图像变量
    C# 线程同步
    C# 单例模式实现
    C# 限制窗体弹窗显示必须关闭后才能重新实例化窗体
    Java定时清理过期文件
    GrayLog + Logspout + Docker 实现分布式日志聚合
    基于Spring Security OAuth2搭建的Spring Cloud 认证中心
    快速搭建Docker Registry私有仓库
    让你的Spring Boot应用快速运行在Docker上面
  • 原文地址:https://www.cnblogs.com/joyous-day/p/6490963.html
Copyright © 2011-2022 走看看