clone

  • protected Object clone() throws CloneNotSupportedException

    • 一般情况下,要clone方法需要抛出异常
    • 创建并返回此对象的一个副本
    • x.clone() != x
      • 也就是说是不同的对象,复制的对象与原来的对象是一个不同的对象
    • x.clone().getClass() == x.getClass()
      • 说明是同一个类
  • Cloneable接口
    • 在clone方法所在类中需要实现这个接口,因为这个接口是复制的标志接口
    • 记住: 这个接口没有构造方法与成员方法
package cn.itcast_04;public class Student4 implements Cloneable {private String name;private int age;public Student4() {super();}public Student4(String name, int age) {     //调用是Object构造方法    super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//重写clone()方法重写
    @Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}

package cn.itcast_04;
/* *protected void finalize();当垃圾回收器确定不存在对象有更多引用时候,垃圾回收器调用此方法*但是什么时候调用该方法不知道**proected Object clone();创建并且返回该对象的副本*    A:重写该方法;**    Cloneabel;此类实现了Cloneable 接口,以指示Object.clone()方法对对象复制换句话说,只有实现该接口,才能复制对象Cloneable 是标志接口,里面没有方法,只有继承该方法才能克隆对象*/public class StudentDemo4
{public static void main(String[] args) throws CloneNotSupportedException{//创建学生对象Student4 s = new Student4();s.setName("liqingxiang");s.setAge(24);Object obj = s.clone();Student4 s2 = (Student4)obj;System.out.println("name:" + s.getName() + ",  age:" +s.getAge());System.out.println("name:" + s2.getName() + ",  age:" +s2.getAge());System.out.println("==============");//s对象改变,但是s2对象属性没变,因此他们是两个不同的对象s.setAge(29);s.setName("xiaoming");System.out.println("name:" + s2.getName() + ",  age:" +s2.getAge());}
}

转载于:https://www.cnblogs.com/yu-zhi/p/9527155.html

Object_clone相关推荐

  1. 《克隆人的进攻》面向对象Java版

    Java Q&A Java 问答 Attack of the clones 克隆人的进攻 之 面向对象Java版 Time and space considerations in four d ...

最新文章

  1. UIViewController的生命周期及iOS程序执行顺序
  2. VUE2.X组件之间通信的2种方式(针对子组件值变化去改变相应父组件的值)
  3. 数据结构特性解析 (二) ArrayList
  4. nullptr/nullptr_t
  5. 2006年软件500强
  6. Ajax jquery的库的简化版本
  7. LeetCode 1708. 长度为 K 的最大子数组
  8. jquery form java_springmvc利用jquery.form插件异步上传文件示例
  9. 如何写出更好的代码(文末有福利)
  10. Hutool:时间日期工具
  11. cgic 测试demo
  12. 验证码这种反人类的存在,浪费全球人口15万小时,有办法取缔吗?
  13. 最小二乘法以及正交最小二乘(OLS)的推导与简单比较
  14. 图解机器学习神器:Scikit-Learn
  15. ubuntu下破解rar文件的密码
  16. WorkMan学习篇:三
  17. Linux移植EC20 4G模块驱动简易教程
  18. 中文版扩散模型课程:第一单元
  19. 如何用数据分析进行游戏道具的精准投放?
  20. Deep Learning × ECG (5) :利用循环神经网络RNN对心律失常ECG数据进行分类

热门文章

  1. lintcode-87-删除二叉查找树的节点
  2. java多条件不定条件查询
  3. table设置width无效
  4. SPF,DSPF,RDPF,SPEF and SBPF.
  5. js 中exec、test、match、search、replace、split用法
  6. flutter打包出的问题
  7. C++---string类接口整理与深浅拷贝
  8. 【零基础学Java】—对象的向上和向下转型(二十七)
  9. Mybatis Plus 连表操作及分页
  10. 车险对方全责理赔要自己垫付吗?