重写对象方法 Object

本文探讨了Java中对象复制的基本概念,重点介绍了Cloneable接口及其提供的默认clone()方法,通过实例展示了如何使用clone()方法创建对象的浅复制,并讨论了浅复制的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、clone()方法

        如果类中实现Cloneable接口,则该方法返回对象实例的副本。Cloneable是标记接口,即该接口并不定义任何方法,而是用于表示类的实例具有某个属性。本例中,该接口表示允许创建类实例的克隆。下面这段代码检查了对象unknown是否实现Cloneable接口,并显示消息来表示检查结果:

Object unknown = getAnObject();
if (unknown instanceof Cloneable) {
    System.out.println("I can create a clone of this object");
 } else{
    System.out.println("I can't create a clone of this object");
}

        Object类中定义的默认clone()实现方法生成对象的浅复制。浅复制是对象复制,该复制引用的对象与园对象所引用的对象一致。例如,假定之前定义的Employee类实现Cloneable接口:

   

public class Employee implements Cloneable{
    public int employeeID;
    public String firstName;
    public String lastName;
}

        再假设创建并初始化了Employee类的实例,然后调用clone()方法生成其他副本。注意到。由于Object类中的clone()实现是protected,因此必须从子类或同一包中的类来调用该方法,否则还需要将该方法重写为public。

Employee original = new Employee();
original.employeeID = 123456;
original.firstName = "John";
original.lastName = "Smith";
Employee myClone =(Employee)(original.clone());
        这段代码中创建了Employee实例的一个浅复制,并将指向该复制的引用保存到myClone中。由于这是浅复制,因此克隆中的对象引用仍然指向相同的对象,也就是原对象中引用的对象,而不是这些对象的副本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值