一个例子,始终不能理清思路。
class test{
int a;
test(int i){
a=i;
}
test incrbyten(){
test temp=new test(a+10);
return temp;
}
}
class retob{
public static void main(String args[]){
test ob1=new test(2);
test ob2;
ob2=ob1.incrbyten();
System.out.println("ob1.a"+ob1.a);
System.out.println("ob2.a"+ob2.a);
ob2=ob2.incrbyten();
System.out.println("ob2.a after second increase: "+ob2.a);
}
}
结果
ob1.a :2
ob2.a :12
ob2.a after second increase: 22
1、我认为class test中incrbyten()是成员函数。但为什么incrbyten()前面还加test,这不是自调用吗?好像也不像。
对于test incrbyten(),他应该也有和class test一样的结构(同样的属性和方法,如,得有构造函数test(int i)),
但事实上,他是个函数,自己定义了方法和属性。
既然它是test类的,test类的方法、属性到哪去了?迷惑!
我认为,在class retob中,使用ob2=ob1.incrbyten();时,就应该进入死循环,编译时显示错误。
但事实上,调试通过了。
2、我就无法清晰的理解他们是怎么工作的,无论文字还是图示。
3、ob2=ob1.incrbyten();此时ob2=12。可为什么这个12就是ob2.a?为什么?