package com.sjms._04_创建_原型模式;
/**
* 原型模式(Prototype)
* 实现方式:
* 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 CloneNotSupportedException)
* 注意:
* 1.被克隆对象.clone()出的对象,是被克隆对象的当前状态
* 2.被克隆对象 如果返回的值是 super.clone(); 此时属于浅拷贝
* <p>
* 浅拷贝
* 1)成员变量是,基本数据类型,此时浅拷贝是值传递。其中一个对象的值修改后,不会影响到另一个对象的值。
* 2)成员变量是,引用数据类型,比如:数组、类的对象。此时浅拷贝是引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。两个对象中的该成员变量执行的是同一个地址,其中一个对象的值修改后,另一个对象的值也会改变。
*/
public class _Test_浅 {
public static void main(String[] args) throws CloneNotSupportedException {
//
Yang_浅 yang = new Yang_浅("001", 1);
System.out.println("原始羊-姓名:" + yang.name);
System.out.println("原始羊-地址:" + yang);
System.out.println();
//
Yang_浅 clone_yang = (Yang_浅) yang.clone();
System.out.println("克隆羊-地址:" + clone_yang);
System.out.println("克隆羊-姓名:" + clone_yang.name);
System.out.println();
//
System.out.println("修改原始羊姓名为:小明");
yang.setName("小明");
System.out.println();
//
System.out.println("原始羊-姓名:" + yang.name);
System.out.println("克隆羊-姓名:" + clone_yang.name);
System.out.println();
//
System.out.println("原始羊-数组内容:" + yang.list);
System.out.println("克隆羊-数组内容:" + clone_yang.list);
System.out.println();
//
System.out.println("原始羊数组添加内容 MMM ");
yang.add();
System.out.println();
//
System.out.println("原始羊-数组内容:" + yang.list);
System.out.println("克隆羊-数组内容:" + clone_yang.list);
System.out.println();
}
}
长毛山顶洞人
- 粉丝: 99
- 资源: 52
最新资源
- LABVIEW程序实例-DS写数据.zip
- LABVIEW程序实例-DS写属性数据.zip
- LABVIEW程序实例-graph接受的数据类型.zip
- LABVIEW程序实例-TCP读数据.zip
- LABVIEW程序实例-Launch DS Server if Local URL.zip
- LABVIEW程序实例-web写数据.zip
- LABVIEW程序实例-TCP写数据.zip
- LABVIEW程序实例-web发布程序.zip
- LABVIEW程序实例-xy Graph.zip
- LABVIEW程序实例-按钮的机械动作.zip
- LABVIEW程序实例-While循环的先检查后执行.zip
- LABVIEW程序实例-保存二进制文件附加文件头2.zip
- LABVIEW程序实例-保存波形文件.zip
- LABVIEW程序实例-保存二进制文件附加文件头1.zip
- LABVIEW程序实例-保存二进制文件附加文件头3.zip
- LABVIEW程序实例-波形属性.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论5