首页 > 其他分享 >clone方法

clone方法

时间:2024-08-07 22:28:03浏览次数:13  
标签:clone Dog demo3 c1 方法 age d1

/*
    Object类中的clone方法
    不是任何一个类都可以调用clone方法的,如果此对象的类不实现接口Cloneable ,则抛出CloneNotSupportedException
    只有实现了Cloneable接口的类创建出来的对象,才可以调用clone方法
    我们观察Cloneable接口文档发现,这个接口源码什么都没有,像这样的接口,称之为标记接口。

    在IT行业中,克隆分两种克隆,克隆有个专业的称呼:拷贝
        深拷贝:拷贝后对象中的引用数据类型也会单独复制一份
        浅拷贝:Object中的clone方法指的是浅拷贝,不会拷贝新的引用成员变量值

 */
class Demo3{
    int a = 10;
}


class Dog implements Cloneable{
    String name;
    int age;
    Demo3 demo3;

    public Dog() {
    }

    public Dog(String name, int age, Demo3 demo3) {
        this.name = name;
        this.age = age;
        this.demo3 = demo3;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", demo3=" + demo3 +
                '}';
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class ObjectDemo3 {
    public static void main(String[] args) throws Exception{
        Demo3 demo3 = new Demo3();

        //创建一个狗狗的对象
        Dog d1 = new Dog("史努比", 3, demo3);
        System.out.println("d1: "+d1+", d1的地址值是:"+d1.hashCode()+"d1中demo3对象的a的值:"+d1.demo3.a);
        Object c1 = d1.clone();
        Dog c2 = (Dog) c1;
        System.out.println("c1: "+c1+", c1的地址值是:"+c1.hashCode()+"c1中demo3对象的a的值:" + c2.demo3.a);
//        System.out.println(d1==c1); //克隆出来的地址值是不一样的

        c2.demo3.a = 20;
        System.out.println(d1.demo3.a);
        System.out.println(c2.demo3.a);
    }
}

标签:clone,Dog,demo3,c1,方法,age,d1
From: https://www.cnblogs.com/qiwei-bigdata/p/18347986

相关文章

  • equals方法
    /*Object类中成员方法:publicbooleanequals(Objectobj)protectedvoidfinalize()是做垃圾回收的,不是立刻就做回收面试题:finalfinallyfinalize区别?protectedObjectclone()知识点:1、==比较,如果比较的基本......
  • 不平衡学习的自适应合成采样方法ADASYN(Matlab代码实现)
     ......
  • 【数值计算方法】线性方程组的迭代解法-数值实验
    fromformu_libimport*importnumpyasnpA=np.array([[-55,-5,12],[21,36,-13],[24,7,47]])b=np.array([41,52,12])w=lambdat:0.1*txs,ys,ts=[],[],[]foriinrange(1,20):_,err=SORIter(A,b,w(i))xs.append(list(......
  • 大语言模型评测方法全面总结!
    自2017年Transformer模型提出以来,自然语言处理研究逐步转向基于该框架的预训练模型,如BERT、GPT、BART和T5等。这些预训练模型与下游任务适配后,持续刷新最优结果。然而,现有评测方法存在广度和深度不足、数据偏差、忽视模型其他能力或属性评估等问题。因此,需要全面评测和深入......
  • Java--构造器和构造方法
    目录构造方法注意事项一个类里面写了构造器,手动添加参数,若没有构造器直接运行构造方法是一种特殊的方法,为了创建对象功能:完成对象数据的初始化而带参构造的本质是创建对象的同时,趁机完成赋值修饰符class类名{public方法名(与类名一致)(参数){}}注意事项1.如果没有定义......
  • 《彩虹六号:围攻》游戏闪退弹窗“缺失vulkan-1.dll”错误怎么解决?彩虹六号围攻找不到v
    在《彩虹六号围攻》遇到找不到vulkan-1.dll的情况时,可采取以下修复方法。可重新安装显卡驱动,检查游戏文件完整性,从正规渠道下载vulkan-1.dll文件并放置到正确位置,或使用dll修复工具来尝试解决这一问题。本篇将为大家带来彩虹六号围攻找不到vulkan-1.dll修复方法的内容,感兴趣的......
  • 《双人成行》游戏闪退弹窗“找不到anadius64.dll无法继续执行”问题怎么修复?双人成行
    当玩《双人成行》出现游戏崩溃并提示缺失anadius64.dll文件时,可以这样解决。首先去可靠的网站下载该文件并放置到指定位置,或者使用修复工具进行修复,也可以检查系统更新,确保系统环境正常,从而解决这一问题。本篇将为大家带来双人成行游戏崩溃缺失anadius64.dll文件解决方法的内容......
  • 《剑灵》游戏崩溃弹窗“错误126:未找到dll”怎么处理?剑灵游戏闪退提示错误126未找到dll
    在《剑灵》中遇到游戏崩溃弹窗显示“错误126:未找到dll”时,可尝试这样解决。先检查游戏文件完整性,确保相关动态链接库文件未缺失,然后更新驱动程序,清理电脑垃圾,若还不行,可考虑重新安装游戏来解决这一问题。本篇将为大家带来《剑灵》游戏崩溃弹窗“错误126:未找到dll”解决方法的内......
  • error C2220 万能解决方法
    如果在VisualStudio2022中没有找到将“警告视为错误”的选项,可以通过修改项目文件(.vcxproj)直接进行配置。以下是具体的步骤:1.修改项目文件(.vcxproj)打开项目所在的文件夹,找到.vcxproj文件。用文本编辑器(如Notepad++、VSCode等)打开这个文件。找到或添加<TreatWarningAsE......
  • 2分析方法
    2分析方法常用的分析方法逻辑树分析方法——将复杂问题变简单——费米问题PEST分析方法——行业分析——研究中国少儿编程行业P政治(politics)E经济(economy)S社会(society)T技术(technology)多维度拆解分析——多角度看待问题——相亲对象对比分析方法——对比分析——问朋友自己......