public class TestClone implements Cloneable{  int count;
  TestClone next;
  public TestClone(int count){
  
  this.count=count;
  if(count>0)          //递归 一连串的 next 对象??系统怎么识别 ,六个对象 同一个名字next?
      next=new TestClone(count-1);
                          }
                  
    void add(){          
      count++;
      if(next!=null)    //怎么循环??弄不懂他的联系机制,如c/c++里有指针,那么这里??
      next.count++;     //就是说他怎么传递下去的
             }
 public String toString(){  
 
 String s=String.valueOf(count)+"";
 if(next!=null)          
 s+=next.toString();
 return s;
                     }
                     
                     
 public Object clone(){
 
 Object o=null;
 try{
 o=super.clone();
 
 }catch(Exception e)
 {System.out.println("cannot clone");}
 return o;
                 }                                                      
public static void main(String []args){TestClone c=new TestClone(5);
          
          System.out.println("c="+c);
          TestClone cl=(TestClone)c.clone();
          System.out.println("c="+c);
          c.add();
        
          System.out.println("after added\nc="+c+"\ncl="+"cl");
                                 }                        }另外还有个问题 ,我根本就看不懂 复杂的程序更不用说写了 ,问题出在 好象main 还是里没有调用但 好像在类里面自动执行了????

解决方案 »

  1.   

    好乱的code
    头有点晕了  不好意思~
      

  2.   

    //递归 一连串的 next 对象??系统怎么识别 ,六个对象 同一个名字
    第一个对象的名字是TestClone,后面5个对象的引用是保存在前一个对象的局部变量里的。//怎么循环??弄不懂他的联系机制,如c/c++里有指针,那么这里??
    这里就是使用对象的引用//就是说他怎么传递下去的
    这样是传递不下去的,要传递下去要用next.add();
      

  3.   

    public class Test implements Cloneable
    {
        int count;
        Test next;
      
        public Test(int count) //Test的构造函数
        {
            this.count=count; //把参数赋值给count
            if(count>0)
            //当count>0时,创建一个新的Test的对象,递归。
            //第一个对象名是c,其它的保存在调用它的对象的局部变量里。            next=new Test(count-1);
        }
                      
        void add()
        {          
            count++;
            //此程序中现在count的值是5,count++后值为6
        
            if(next!=null)
            //现在next不为空,所以next.count也自增,4+1=5;
        
                next.count++;
        }

        public String toString()
        {
            String s=String.valueOf(count)+"~";
            //此处加了一个'~',希望帮助楼主理解程序。
            //把数字转化为字符串类型。
     
            if(next!=null)  
            //如果next!=null,那么s再调用next.toString();            s+=next.toString();
                return s;
        }
                                               
        public Object clone()
        {
            Object o=null;
            try{
                o=super.clone();
                }catch(Exception e)
            {System.out.println("cannot clone");}
     
            return o;
        }                                                          public static void main(String[] args)
        {
            Test c=new Test(5);
            //创建一个Test 类型的变量c,参数为5,调用Test构造函数;
              
            System.out.println("c="+c); //调用Test里的String toString()方法。
            Test cl=(Test)c.clone(); //把c克隆给c1
            System.out.println("c="+c);
        
            c.add();          //调用c.add()方法。
            System.out.println("after added\nc="+c+"\ncl="+"cl");
            //再输出c,因为调用了c.add();所以5,4都自增了,变成了:c=6~5~3~2~1~0~
        }                        
    }
      

  4.   

    我也刚学JAVA不久,对这个程序我也只是有一点点感觉。呵呵。可能说的好多地方不到位或是有错误,希望高手指正。这个程序的源代码运行结果应该是:c=543210
    c=543210
    after added
    c=653210
    cl=cl改了以后就成:c=5~4~3~2~1~0~
    c=5~4~3~2~1~0~
    after added
    c=6~5~3~2~1~0~
    cl=cl呵呵。希望楼主能找到一点灵感,共同进步。