一个例子,始终不能理清思路。

funsone 2004-06-09 11:57:54
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?为什么?
...全文
53 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ynsfsw 2004-06-10
  • 打赏
  • 举报
回复
1:那个test指的是函数的返回型别!
什么是方法?
test incrbyten(){它本来就是一个方法一个默认的访问权限,返回型别为test,名称为incrbyten,没有参数的方法。
2:多看看书就知道了。
3:你从那看出ob2=12?应该是ob2.a=12。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧