社区
Java SE
帖子详情
普通类实例为什么不能直接调用Object的clone方法
caibird1024
2011-06-30 11:51:09
rt
...全文
804
10
打赏
收藏
普通类实例为什么不能直接调用Object的clone方法
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caibird1024
2011-06-30
打赏
举报
回复
[Quote=引用 5 楼 alexandertech 的回复:]
Object的clone()被声明为proctected,让你无法从外部调用,其实就是等你为自己的类实现可从外部调用的clone()方法。
JDK并不预知你的自定义类包含有哪些数据及变量,因此最终clone()的实现一定得自力更生。
[/Quote]
protected在子类中应该也是可见的吧?还是我基础知识没掌握好?
caibird1024
2011-06-30
打赏
举报
回复
[Quote=引用 3 楼 sunyiz 的回复:]
如果是你自己的类
那你肯定要自己实现clone()
方法
某些类的clone()的方法可以直接用
那是应为他们的clone()方法已经被实现了
[/Quote]
这我也知道
我纠结饿的是类实例调用object的clone方法eclipse提示The method clone() from the type Object is not visible。clone()方法是protect为什么不可见
飞跃颠峰
2011-06-30
打赏
举报
回复
Object的clone()被声明为proctected,让你无法从外部调用,其实就是等你为自己的类实现可从外部调用的clone()方法。
JDK并不预知你的自定义类包含有哪些数据及变量,因此最终clone()的实现一定得自力更生。
桃园闲人
2011-06-30
打赏
举报
回复
[Quote=引用 3 楼 sunyiz 的回复:]
如果是你自己的类
那你肯定要自己实现clone()
方法
某些类的clone()的方法可以直接用
那是应为他们的clone()方法已经被实现了
[/Quote]
支持!
sunyiz
2011-06-30
打赏
举报
回复
如果是你自己的类
那你肯定要自己实现clone()
方法
某些类的clone()的方法可以直接用
那是应为他们的clone()方法已经被实现了
五哥
2011-06-30
打赏
举报
回复
Object 类的 clone 方法执行特定的克隆操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意:所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我克隆。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。
五哥
2011-06-30
打赏
举报
回复
Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。
OPPPPOP
2011-06-30
打赏
举报
回复
回帖就有分拿也是吧 哈哈
你不在自己类中重写clone方法 又想调这个类所继承的clone方法的话 jvm就给你扔异常 其实原则上也么啥子问题 只不过人家这么规定了 你就老老实实实现这个接口撒 我记得以前老师再三说 Cloneable只是一个标记接口 它不提供任何方法 也就是他不做啥事 他只是个身份的象征 呵呵 有证好办事哇
caibird1024
2011-06-30
打赏
举报
回复
自己有理解了一下protected的,有点意思
sunyiz
2011-06-30
打赏
举报
回复
想用 clone() 方法
必须自己实现,
即在你自己的类中重写 clone() 方法,并声明为 public
这样才能在外部调用
最后,别忘了实现 Cloneable 接口
java
clone
引用_Java
类
中为什么
不能
直接
调用
Object
的
clone
()
方法
在Java中所有的
类
都是
Object
的子
类
。在
Object
类
中有一个
clone
方法
定义如下:protected native
Object
clone
() throws
Clone
NotSupportedException;该
方法
的修饰符为protected,表示该
方法
可以在子
类
中
调用
然后结果是
调用
不了网上有回答是需要实现
Clone
able接口,但即使实现了,也
调用
不到。不实现
Clone
able接...
java
object
类
中的
clone
_Java
类
中为什么
不能
直接
调用
Object
的
clone
()
方法
clone
() 是protected的作用域。继承
Clone
able接口后要重写
方法
,然后在
方法
里
调用
父
类
的
clone
()的
方法
。同时默认的克隆对于引用对象只是浅克隆。给你一段代码自己去运行试试吧:package cesar.Test0810;/*** Created by Cesar on 2016/8/10.*/public class A implements
Clone
able{priva...
子
类
为什么
不能
直接
调用
object
的
clone
方法
1.在
Object
中,声明如下protected native
Object
clone
() throws
Clone
NotSupportedException;(由于使用native,无需实现
方法
体,该
方法
没有在
object
实现)。 2.为什么要这么设计: a:
clone
是浅拷贝,有一定的缺陷 b:不同的
类
,其引用
类
型不一样...
Object
的子
类
为什么
不能
调用
clone
()
Object
是所有
类
的父
类
,而
Object
中实现了
clone
()
方法
。那么为什么子
类
中
不能
调用
呢。 这个原因就在于
clone
()是一个protect
方法
。因为protect
方法
只能在当前包或者子
类
中
调用
。而
不能
通过子
类
的
实例
调用
。如果能通过子
类
的
实例
来
调用
的话,那和puplic还有什么区别呢。 ...
java
Object
类
clone
()
方法
详解
今天写程序的时候像
直接
调用
Object
的
clone
()
方法
来copy一个副本,但是发现myEclipse的提示中并没有该
方法
,以为在jdk1.7中取消了该
方法
,然后我
直接
敲上
clone
()后: public class Test
Object
{ public static void main(String[] args) { Student s = new Student(1, "小时")
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章