Board logo

标题: 关于java clone的问题 [打印本页]

作者: 逐鹿苍狼    时间: 2005-2-6 21:40

public class A
{
  public static void main(String[] args)
  {
    B c1 = new B(5);
    System.out.println("c1: "+c1);
    B c2 = (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;
  }
}


请问这段程序有什么问题?
为什么在运行的时候c1对象的指总是不能拷贝到c2中?
谁能解答,谢谢。
1000通宝答谢!!
作者: kingofworl    时间: 2005-2-6 22:03

运行的结果是c1=5.0
c2=5.0 没问题呀,还是我没理解
作者: 逐鹿苍狼    时间: 2005-2-6 23:03

可为什么我运行之后,c1=5.0   c2=null???
作者: kingofworl    时间: 2005-2-6 23:11

你的代码绝对正确,我怕看错特意copy试了

图片附件: 1.JPG (2005-2-6 23:11, 19.67 K) / 该附件被下载次数 163
http://xycq.org.cn/forum/attachment.php?aid=5143


作者: kingofworl    时间: 2005-2-6 23:15

你看,跟你打得一模一样

附件: A.java (2005-2-6 23:15, 172 bytes) / 该附件被下载次数 187
http://xycq.org.cn/forum/attachment.php?aid=5144
作者: kingofworl    时间: 2005-2-6 23:21

我看咱俩唯一可能不一样的地方就是super.clone(); 是不是继承的类的这个方法被重写过,其实我是初学者,要是说的不对请多多见谅

附件: B.java (2005-2-6 23:21, 288 bytes) / 该附件被下载次数 203
http://xycq.org.cn/forum/attachment.php?aid=5145
作者: 逐鹿苍狼    时间: 2005-2-7 03:09

我也知道这段代码不会有太大问题。我把你的拷贝后运行,结果和你的一样,c1,c2都为10。
可是我运行我给你的这个就会出现不能拷贝的情况,很奇怪。
不过还是要谢谢你。
作者: 逐鹿苍狼    时间: 2005-2-7 03:10

11111

附件: A.java (2005-2-7 03:10, 554 bytes) / 该附件被下载次数 210
http://xycq.org.cn/forum/attachment.php?aid=5152
作者: 逐鹿苍狼    时间: 2005-2-7 03:23

确实很重写了,因为clone()方法是由Object类提供的,将Object类的protected改写为public。
钱已汇入。
作者: kingofworl    时间: 2005-2-7 08:18

奇怪,开始的那个要是不小心打错了哪里那编译就通不过呀,是不是有什么病毒了 ,我今天突然发现存款变成整了,不过怕没利息不敢去看,原来如此,太客气了,给我88取个吉利就可以了,我给别人都是这么给的,先暂借两天




欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) Powered by Discuz! 5.0.0