Java对象克隆clone();

概念

clone()对象克隆的用法

 语法:

 你以为这样就结束了?

实现深拷贝(不完全深拷贝)

 附录:


概念

在讲克隆之前我们首先熟悉一个常见的面试题。深拷贝和浅拷贝。

                        储存地址    修改副本的值是否会影响到原变量
浅拷贝 原变量与副本均指向同一个地址                             是
深拷贝 副本变量另外储存在另外的独立空间(包括属性也有其独自的地址)                             否

如图:

 大家都知道的一种拷贝方式,就是 ==

Student student1 = new Student ();

Student student2 = student1;

 但是 == 只是浅拷贝。如果我们想要在修改student2d的基础上去又要不影响到Student1,那就要用到克隆(  clone()  )了。

public class CloneTest {
    public static void main(String[] args) throws CloneNotSupportedException {
        Student student = new Student("lps",14);
        Student student1 = student.clone();
        student1.setName("qqq");

        System.out.println(student.toString());
        System.out.println(student1.toString());

    }
}

 但是却报错了:

java: clone() 在 java.lang.Object 中是 protected 访问控制

这是什么回事呢?protected不是可以在子类访问到吗?不是所有的累都是Object类吗?

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值