cloneable克隆接口

  • 1. cloneable

1. cloneable

  1. 第一步是
    class person implements Cloneable
    这个就表明 person类 可以被克隆
  2. 但是
    这个克隆接口其实是什么都没有的
  1. 第二步就是调用 object中的 克隆方法

    这个 super.clone()
    首先 这是一个object中的方法,而调用clone的对象 是继承与object中的,所以要用super克隆(也就是完全克隆,如果只用this克隆,就不能克隆出默认的object父类)
  1. 深拷贝(代码如下)
    就是完全拷贝出一个 与原来不相关的

什么情况下考虑深拷贝?
如下:一个类中还有另外一个类
所以克隆的时候就会产生,类中类是相同的
如上图片所反映的就是 浅拷贝情况
对应代码就是:
return super.clone();

深拷贝情况:

        Person tmp  = (Person) super.clone();tmp.m = (Money) this.m.clone();return tmp;

总代码如下:

class Money implements Cloneable{public double money=19.9;@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}class Person  implements Cloneable{public int age=10;public Money m = new Money();@Overrideprotected Object clone() throws CloneNotSupportedException {Person tmp  = (Person) super.clone();tmp.m = (Money) this.m.clone();return tmp;//return super.clone();}@Overridepublic String toString() {return "Person{" +"age=" + age +'}';}
}public class Test {public static void main(String[] args) throws CloneNotSupportedException{Person person = new Person();Person person2 = (Person)person.clone();System.out.println(person.m.money);System.out.println(person2.m.money);System.out.println("======================");person2.m.money = 99.9;System.out.println(person.m.money);System.out.println(person2.m.money);}
class Money implements Cloneable{public double money=19.9;@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}class Person  implements Cloneable{public int age=10;public Money m = new Money();@Overrideprotected Object clone() throws CloneNotSupportedException {Person tmp  = (Person) super.clone();tmp.m = (Money) this.m.clone();return tmp;//return super.clone();}@Overridepublic String toString() {return "Person{" +"age=" + age +'}';}
}public class Test {public static void main(String[] args) throws CloneNotSupportedException{Person person = new Person();Person person2 = (Person)person.clone();System.out.println(person.m.money);System.out.println(person2.m.money);System.out.println("======================");person2.m.money = 99.9;System.out.println(person.m.money);System.out.println(person2.m.money);}

cloneable克隆接口相关推荐

  1. 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复

    前言 虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程序中 ...

  2. public接口可以被任何一个类实现_一文带你深入Java核心技术:对象克隆+接口与回调,还有这种操作...

    对象克隆 当拷贝一个变量时,原始变量与拷贝变量引用同一个对象,如图6-1所示.这就是说,改变一个变量所引用的对象将会对另一个变量产生影响. Employee original = new Employ ...

  3. 虚拟机克隆_了解Java中的可克隆接口

    虚拟机克隆 什么是对象克隆? 对象克隆是生成具有不同名称的对象的精确字段到字段副本的过程. 克隆的对象在内存中有自己的空间,可在其中复制原始对象的内容. 这就是为什么在克隆后更改原始对象的内容时,所做 ...

  4. java中的深度克隆浅克隆_了解Java中的可克隆接口

    java中的深度克隆浅克隆 什么是对象克隆? 对象克隆是生成具有不同名称的对象的精确字段到字段副本的过程. 克隆的对象在内存中有自己的空间,可在其中复制原始对象的内容. 这就是为什么在克隆后更改原始对 ...

  5. 了解Java中的可克隆接口

    什么是对象克隆? 对象克隆是生成具有不同名称的对象的精确字段到字段副本的过程. 克隆的对象在内存中有自己的空间,可在其中复制原始对象的内容. 这就是为什么在克隆后更改原始对象的内容时,所做的更改不会反 ...

  6. java如何实现克隆接口_java之实现clone接口的详解,克隆一个对象--对应有浅克隆和深克隆,概念结合代码深入理解...

    1.首先,你要知道怎么实现克隆:实现Cloneable接口,在bean里面重写clone()方法,权限为public. 2.其次,你要大概知道什么是地址传递,什么是值传递. 3.最后,你要知道你为什么 ...

  7. MySQL8.0 物理克隆接口_技术实战 MySQL 8.0.17 克隆插件分享-爱可生

    原标题:技术实战 MySQL 8.0.17 克隆插件分享-爱可生 背景 很神奇,5.7.17 和 8.0.17,连续两个17小版本都让人眼前一亮.前者加入了组复制(Group Replication) ...

  8. MySQL8.0 物理克隆接口_实战 MySQL 8.0.17 Clone Plugin(转)

    背景 很神奇,5.7.17 和 8.0.17,连续两个17小版本都让人眼前一亮.前者加入了组复制(Group Replication)功能,后者加入了克隆插件(Clone Plugin)功能.今天我们 ...

  9. java——集合详解

    2023 1-1 day01 迭代器iterator的作用和使用 1.1 入门案例iterator.java 迭代器主要用于遍历,常用于集合 Iterator it = 集合对象.iterator() ...

最新文章

  1. 测试Linux网卡是否正常工作
  2. java 创建日程到期提醒_苹果“快捷指令”日程播报完美版
  3. Symfony3实现刷新登录时间
  4. 云原生实战派:2021 让改变发生,2022 让创新升级
  5. 阿里云入选 2021 Gartner APM 魔力象限,国内唯一入选云厂商
  6. ant接口自动化 junit_Jenkins + Ant自动运行Junit测试
  7. Outlook 2010 配置关联QQ邮箱
  8. 九宫格布局_晒图最佳九宫格,你早就该这样拍了!
  9. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第四章 课后答案
  10. 北大计算机大神,北大数学大神有多强?简直叹为观止
  11. 双语经典:告别单身的必杀技之情话连篇
  12. MongoDB中的变更通知
  13. 微信小程序开发——websocket(socket在线测试服务器,或本地socket服务器)
  14. 移动硬盘做笔记本硬盘
  15. ssl证书在哪?如何查看ssl证书内容
  16. js返回浏览器的顶部
  17. 看厌了官方皮肤,快试试微信QQ半透明主题!不仅会动还有声音!
  18. qlv转换成mp4只有声音 没有图像没有画面 解决方法
  19. 阿里云配置域名解析(全过程)
  20. Mysql配置文件my.cnf配置及配置参数详解

热门文章

  1. JavaEE初阶---Tomcat
  2. uwp如何建立任何形状的头像,如圆形,方形,六边形等
  3. after effect cc入门教程
  4. 游戏如何用模型虚拟地表达
  5. 字节提前批——抖音开放平台一面
  6. android vlc使用教程_在android项目中使用VLC
  7. pandas条件复合筛选(多条件、与、或)
  8. 520情人节女孩子最喜欢什么礼物?颜值高又实用的礼物合集
  9. 香港大学数据科学(HKU Data Science) 笔试面试经验贴汇总
  10. 多多情报通(多多参谋):拼多多店铺三级惩罚多久恢复?如何恢复?