关于clone???

yourazhe 2003-08-22 01:48:53
Employee original=new Employee();
Employee copy=(Employee)original.clone()
为什么不能够执行呢?而非得重新定义?
难道Employee不是object的子类吗?
...全文
47 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyegg 2003-10-01
  • 打赏
  • 举报
回复
如五星红旗所说,要implements Cloneable
swinging 2003-10-01
  • 打赏
  • 举报
回复
think in java里有详细说明这个方面。建议查阅。
mashaw 2003-10-01
  • 打赏
  • 举报
回复
我对clone()进行了重新定义但还是不行(跟楼主一样的)还是说:clone() has protected access in java.lang.Object希望楼主解决之后记得告诉我:mashaw@163.com,谢谢先。
ticlej 2003-08-22
  • 打赏
  • 举报
回复
就像c++的"="符号一样,clone也是必须自己来实现的.系统目前还不具有这种功能.
freejacky 2003-08-22
  • 打赏
  • 举报
回复
对象应该实现cloneable接口
在对象内部做clone()应该做的事,返回该类的一个新的实现吧
TechnoFantasy 2003-08-22
  • 打赏
  • 举报
回复
呵呵,对java没研究。
yourazhe 2003-08-22
  • 打赏
  • 举报
回复
上面的问题可以这样问:为什么将OBJECT.CLONE()定义为PROTECED,就能够保证派生类必须定义自己的CLONE(),而不能够直接使用继承来的CLONE()。
yourazhe 2003-08-22
  • 打赏
  • 举报
回复
关于这个问题我思考了一下,大概可以这么理解,不对发地方请大家指正:

首先OBJECT.CLONE()是PROTECTED类型。为什么呢?
目的就是各个具体类要定义自己的CLONE(),而不只是简单的调用继承自OBJECT的CLONE()。因为OBJECT在设计自己的CLONE()时对于各个具体类究竟是什么样子根本不知道。所以为了强制每个类都定义自己的CLONE(),那么不管你继承自OBJECT的CLONE()是否满足需求,你还是必须定义自己的CLONE(),只不过在里面只要简单调用一下SUPER.CLONE()就OK了。

我现在不明白的地方在:

JAVA在实现这种机制时采用的方法

因为OBJECT.CLONE()是PROTECTED类型,所以只能够通过在派生类中使用。在其他地方既不能直接使用,也不能够通过一个基类的REFERENCE来调用。
但是在:
Employee original=new Employee();
Employee copy=(Employee)original.clone()
难道original不是OBJECT的一个基类对象吗????????????

现在做一个假设:如果把OBJECT.CLONE()定义为PUBLIC,那么在:
Employee original=new Employee();
Employee copy=(Employee)original.clone()就可以了吗???????

如果我在Employee 里面没有重新定义CLONE(),但是Employee 里面存在继承自BJECT的为PROTECTED的CLONE()。如果将如果把OBJECT.CLONE()定义为PUBLIC,会怎么样???
znjq1001 2003-08-22
  • 打赏
  • 举报
回复
wa!!! 5个星,耀眼
TechnoFantasy 2003-08-22
  • 打赏
  • 举报
回复
你的类应该实现cloneale接口
javahui 2003-08-22
  • 打赏
  • 举报
回复
在Employee里重新定义clone()方法吧,Object的 clone()方法是私有的。

你可以定义一个Employee.myClone():
public Object myClone()
{
return this.clone();
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧