2005-2-6 21:40
逐鹿苍狼
[color=blue]public class A
{
public static void main(String[] args)
{
B c1 = new B(5);
System.out.println("c1: "+c1);
B c2 = (B)c1.clone();
System.out.println("c2: "+c2);
}
}
class B implements Cloneable
{
double radius;
public B(double radius)
{
this.radius=radius;
}
public Object clone()
{
try
{
return super.clone();
}
catch (CloneNotSupportedException ex)
{
return null;
}
}
public String toString()
{
return "radius "+radius;
}
}[/color]
请问这段程序有什么问题?
为什么在运行的时候c1对象的指总是不能拷贝到c2中?
谁能解答,谢谢。
1000通宝答谢!!
2005-2-6 22:03
kingofworl
运行的结果是c1=5.0
c2=5.0 没问题呀,还是我没理解
2005-2-6 23:03
逐鹿苍狼
可为什么我运行之后,c1=5.0 c2=null???
2005-2-6 23:11
kingofworl
你的代码绝对正确,我怕看错特意copy试了
2005-2-6 23:15
kingofworl
你看,跟你打得一模一样
2005-2-6 23:21
kingofworl
我看咱俩唯一可能不一样的地方就是super.clone(); 是不是继承的类的这个方法被重写过,其实我是初学者,要是说的不对请多多见谅
2005-2-7 03:09
逐鹿苍狼
我也知道这段代码不会有太大问题。我把你的拷贝后运行,结果和你的一样,c1,c2都为10。
可是我运行我给你的这个就会出现不能拷贝的情况,很奇怪。
不过还是要谢谢你。
2005-2-7 03:10
逐鹿苍狼
11111
2005-2-7 03:23
逐鹿苍狼
确实很重写了,因为clone()方法是由Object类提供的,将Object类的protected改写为public。
钱已汇入。
2005-2-7 08:18
kingofworl
奇怪,开始的那个要是不小心打错了哪里那编译就通不过呀,是不是有什么病毒了 ,我今天突然发现存款变成整了,不过怕没利息不敢去看,原来如此,太客气了,给我88取个吉利就可以了,我给别人都是这么给的,先暂借两天
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.