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 还是里没有调用但 好像在类里面自动执行了????
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 还是里没有调用但 好像在类里面自动执行了????
头有点晕了 不好意思~
第一个对象的名字是TestClone,后面5个对象的引用是保存在前一个对象的局部变量里的。//怎么循环??弄不懂他的联系机制,如c/c++里有指针,那么这里??
这里就是使用对象的引用//就是说他怎么传递下去的
这样是传递不下去的,要传递下去要用next.add();
{
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~
}
}
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呵呵。希望楼主能找到一点灵感,共同进步。