对象克隆

对象克隆就是对对象的复制操作,在Object类中存在一个clone()方法用于对象的克隆操作。该方法如下:

protected Object clone() throws CloneNotSupportedException;

我们注意到:
1.此方法使用了protected访问权限,这样使得在不同包产生对象时将无法调用Object类中的clone()方法,因此需要子类来覆写clone()方法,才可以正常完成克隆操作;
2.clone()方法上抛出了一个“CloneNotSupportedException”(不支持的克隆异常),这是因为不是所有类的对象都可以被克隆,所以在Java中为了区分哪些对象可以被克隆,专门提供了一个Cloneable接口,要克隆对象的类必须实现Cloneable接口。

注:Cloneable接口没有任何方法,这个接口属于标识接口
关于标识接口:标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。

例:实现克隆操作

package Project.Study.ObjectCloning;class Book implements Cloneable{ //此类对象可以被克隆private String title;private double price;public Book(String title,double price){this.title=title;this.price=price;}public void setTitle(String title) {this.title = title;}@Overridepublic String toString(){return "书名:"+this.title+",价格:"+this.price;}//由于此类需要对象克隆操作,所以才需要进行方法的覆写@Overridepublic Object clone() throws CloneNotSupportedException{return super.clone();  //调用父类的克隆方法}
}
public class Test1 {public static void main(String[]args) throws Exception {Book book1=new Book("Java",79);  //实例化对象Book book2=(Book)book1.clone(); //克隆对象,开辟新的堆内存空间book2.setTitle("C++");           //修改克隆对象属性,不影响其他对象System.out.println(book1);System.out.println(book2);}
}
//结果:
//书名:Java,价格:79.0
//书名:C++,价格:79.0(克隆对象)

上程序利用book1对象的内容克隆出一个新的Book类对象book2,由于这两个对象占据不同的堆内存空间,所以彼此之间不会互相影响。

Java学习总结:34(对象克隆)相关推荐

  1. java学习--类与对象

    文章目录 java学习--类与对象 类的定义与对象的使用 类的私有成员的使用 java学习–类与对象 类的定义与对象的使用 类的定义与对象的使用 类的定义步骤: public 类名: //定义成员变量 ...

  2. java学习之类与对象篇——奥特曼打小怪兽

    java学习之类与对象篇--奥特曼打小怪兽 初次接触Java,我们就被告知Java是一种面向对象的程序设计语言,那么什么是面向对象呢?什么又是对象呢?带着这些个疑问,我们开始了Java学习之旅. 1. ...

  3. Java提升篇:对象克隆(复制)

    引论 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,sho ...

  4. JAVA进阶—注解,对象克隆,设计模式

    目录 注解 什么是注解 内置注解 元注解 重点掌握 自定义注解 对象克隆 为什么要克隆? 如何实现克隆 解决多层克隆问题 Java 设计模式(java design patterns) 设计模式概念 ...

  5. java学习---类与对象

    java学习心得3 文章目录 java学习心得3 类 对象 关键字this 总结与反思 类 一 定义一个Java的类 属性 : 将数据存储在变量中 1成员变量 使用成员变量:对象名.变量名 使用成员方 ...

  6. 【JAVA学习第三期】克隆的几种方式

    JAVA对象克隆 克隆的方式 简单克隆 浅克隆 深克隆 序列化克隆 克隆的方式 首先,了解一下什么是克隆,为什么要用克隆? 在Java程序开发中,想要得到数据对象一模一样的对象,对其中任何一个对象的更 ...

  7. Java学习笔记类对象多态继承(下)

    面向对象(下) 1.类的继承 一.什么是继承,有什么用? 继承:在现实世界当中也是存在的,例如:父亲很有钱,几子不用努力也很有钱 继承的作用: 基本作用:子类继承父类,代码可以得到复用.(这个不是重要 ...

  8. 零基础Java学习之类和对象

    类和对象 类 对象 类与对象的关系 类的定义和对象的创建 事物与类的对比 类的定义格式 对象的创建 类 类:是一类具有相同特性的事物的抽象描述,是一组相关属性和行为的集合.可以看成是一类事物的模板,使 ...

  9. java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释

    ***对象作为参数传递*** class passparam { int x;   public static void main(String[] args)   { passparam obj = ...

最新文章

  1. 自定义View字段表头
  2. Spring jdbc的搭建
  3. 对比tensorflow查看打印输出张量Tensor的两种方法(急切执行tf.enable_eager_execution()和tf.Session.run())
  4. VR开发中性能问题—OculusWaitForGPU
  5. 在单节点和多节点上的Hadoop设置
  6. python代码自动生成器下载_Python代码生成器
  7. 前端-requests-flask对应关系 form
  8. Excel VBA 打开对话框,获取文件夹路径
  9. 手机自带计算机的功能,手机上的这3个小功能,比电脑方便好用,你知道吗?...
  10. android 取消选中状态,Android:显示/隐藏偏好检查/取消选中其他CheckBoxPreference
  11. 简单架设Jabber 局域网即时通讯服务器
  12. InfluxDB查询 tag和field列名字重复
  13. 淘宝HTML5版私钥泄漏
  14. dp:股票系列I II III IV 含冷冻期 含手续费
  15. 通过堡垒机/跳板机实现文件在本地Mac与服务器之间的互传
  16. python as f是什么意思_Python中 with open(file_abs,'r') as f: 的用法以及意义
  17. springmvc 发送PUT 和 DELETE 请求
  18. 如何解决win10不能访问局域网其他电脑的问题
  19. 基于ElementUI 国际化电话组件el-phone-number-input用法
  20. 盘点移动办公的2018:连接、推进与动能

热门文章

  1. GeoIP的使用 - PHP版
  2. C#和Unity编码和游戏开发学习教程
  3. Rocksdb 事务(一): 隔离性的实现
  4. C++的多个有序链表合并
  5. C功底挑战Java菜鸟入门概念干货(一)
  6. TI IPNC Web网页之网页修改教程
  7. 黑马程序员5 多线程
  8. CBitmapButton的使用(转)
  9. 【C++】【九】栈的应用
  10. 内存溢出和内存泄漏的定义,产生原因以及解决方法(面试经验总结)