关于this的小问题~~

larrygao927 2006-04-30 02:55:58
class person
{
String name;
person(){}
person(String name)
{
this.name=name;
}
void fun1()
{
System.out.println(name);
}
void fun2()
{
new person("hello");
this.fun1();
}
}
class gcx
{
public static void main(String[] args)
{
person a=new person();
a.fun2();
}
}
结果显示的是null~按我理解的,应该能显示出hello~~
我理解的流程是:先在main里创建对象,并调用fun2(),在fun2()中先执行person有参数的构造函数~这时name等于hello,this.name也是hello,this.name代表person类开始时声明的name~~再执行fun1(),this.fun1()的意思就是调用fun2()的对象也调用fun1(),在System.out.println中的name是person类开始时声明的name~~这样就输出hello了~~
这样的理解对吗?
...全文
173 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zousoft 2006-04-30
  • 打赏
  • 举报
回复
this是“自己”的意思,delphi中对应的关键字是self,我觉得更贴切。
Camelh 2006-04-30
  • 打赏
  • 举报
回复
void fun2()
{
new person("hello");//你创建这个对象,但是没有引用变量来使用它,
this.fun1();
}
dreamover 2006-04-30
  • 打赏
  • 举报
回复
无语

楼主需要加深对象概念的理解
Arxi 2006-04-30
  • 打赏
  • 举报
回复
this.fun1(); 此时的this是a对象,所以调用的是a对象的func1(),而a对象的name属性为null,所以打印出来就为null。如果要打印出来的话,fun2()可以修改成
void fun2()
{
person p = new person("hello");
p.fun1();
}
ouyoo 2006-04-30
  • 打赏
  • 举报
回复
你定义了两个对象,在主方法中调用的是第一个,即为person(){}.里面什么都没有的.
bbflyerwww 2006-04-30
  • 打赏
  • 举报
回复
up!
建议程序风格不要这样写
jifei0611 2006-04-30
  • 打赏
  • 举报
回复
你没有对a中的对像赋值,它的输出能不为空?

this.fun1()= a.fun2() a中的name 没有
larrygao927 2006-04-30
  • 打赏
  • 举报
回复
哦~明白了。。。谢谢各位了~~

62,615

社区成员

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

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