永发信息网

在java中 clone为什么要用super.clone()方法 这里为什么要用super不是this

答案:2  悬赏:60  手机版
解决时间 2021-12-03 07:47
在java中 clone为什么要用super.clone()方法 这里为什么要用super不是this
最佳答案
1.Object中的clone执行的时候使用了RTTI(run-time type identification)的机制,动态得找到目前正在调用clone方法的那个reference,根据它的大小申请内存空间,然后进行bitwise的复制,将该对象的内存空间完全复制到新的空间中去,从而达到shallowcopy的目的。
所以你调用super.clone() 得到的是当前调用类的副本,而不是父类的副本。根本没有必用调用this.clone();
2.要让实例调用clone方法就需要让此类实现Cloneable接口,API里面还有句话是:如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常,这便是“合法”的含义。 但请注意,Cloneable接口只是个标签接口,不含任何需要实现的方法,就像Serializable接口一样。

总之,一般如果你的子类没有特殊需要而重写clone()方法就直接用super.clone() 就行了。
全部回答
LZ你看API文档,最早使用clone方法的是object类,这个类是所有类的父类,在重写方法时调用父类方法肯定用super了,this是本身,但子类本身没有clone方法,是从父类object继承的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
根据元素周期律和元素周期表的知识分析下面的
线偏振光经过双折射后透过波片的o光e光合成后
女孩子怎样说话才嘴甜
交房时,需要交多少契税和维修基金,房子是96
下列4个图象分别表示4种操作过程,其中正确的
如果VAT账号被封了,又不想补税,可以直接注
省级双优生的翻译是:什么意思
在美宜佳做销售收银月月薪多少包吃包住吗
商城和电商的区别是什么
家庭用的小锅卫星接收电视怎样安装
海口环球100电影主题公园怎样
我的车直行,对方车辆从辅道出来左转至路中间
华为手机声誉怎么样
明朝文臣宋濂怎么死的
用三种语态表达我永远爱你一句话
推荐资讯
红酒可以和鱿鱼一起吃吗?
已知供给函数q-p+4=0,需求函数q²+p²
如图,粮仓顶部是圆锥形,这个圆锥底面周长为
师傅,经文纹在身上不好吗?也有好多人说纹在
在东莞东车站坐几路公交车去 土塘第一工业区
4月21日4点45分是什么时辰
太平军从今田起义到定都天京的路线是
屠博士微生态原浆有副作用吗?
钢筋混凝土与砌体墙交界处镀锌钢丝网怎么算量
小区自己车位被占怎么办
3个空啤酒瓶可以换1瓶啤酒,小明买了12瓶,问
沈阳哪里有卖世界名表的(要仿真的)
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?