原型模式 clone 浅拷贝 深拷贝

原型模式 就是实现对象的拷贝。 也就是实现Cloneable接口。先说Cloneable接口。
在这里插入图片描述
空接口。是不是很意外。没有要实现的方法。那怎么实现拷贝呢。原来在Object类里头已经有方法了。只不过默认是不让用。一用就抛出异常。除非你实现了Cloneable,
在这里插入图片描述
最后实现就是下面。是不是很简单
在这里插入图片描述
但是重载方法的时候,发现居然只是调用了super.clone() 但是父类方法是空的啊。注意看父类方法加了native 。也就是说真正的实现是jvm中的同名方法。所以这里也解释了任何实现Cloneable接口都要来一句super.clone的原因。

下面说说浅拷贝跟深拷贝。

浅拷贝的意思就是拷贝出来的属性对象如果是非基础类型,比如int double,以及特殊的String类,那只是一个指针引用。并不是重新分配了内存。这样的结果就是如果是修改任何这类非基础类型的的属性值。拷贝对象跟被拷贝的属性也是要跟着变的。
在这里插入图片描述

深拷贝的意思就是属性对象都是分配了内存的。要怎么实现呢。那就要求属性对象也是实现了cloneable接口。说白了就是子子孙孙都是要可克隆才行。否则默认都是浅拷贝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值