请各位大侠帮忙分析一下下面的这个程序,详细说明这里this的用法。先谢过了!

publicclassdiaoyong{publicstaticvoidmain(Stringargs[]){newdiaoyong(3L);}publicdiaoyon... public class diaoyong
{
public static void main(String args[])
{
new diaoyong(3L);
}
public diaoyong(long x)
{
this((int)x);
System.out.println("a");
}
public diaoyong(int x)
{
this();
System.out.println("b");
}
public diaoyong()
{
System.out.println("c");
}
}
展开
 我来答
eric_luan
2011-07-23 · TA获得超过428个赞
知道小有建树答主
回答量:62
采纳率:0%
帮助的人:87.3万
展开全部
首先你应该明确,下面的3个方法,都是3个重载的构造方法.这个应该没问题吧?

我们从main方法来看.首先main方法里,是new diaoyong(3L); 也就是实例化一个diaoyong类.那么是去找哪个构造方法呢?

因为参数是3L,也就是一个long类型的值,所以程序就跳到public diaoyong(long x)这里了.

这里是关键的this的用法.this本身表示对当前对象的引用,也就是实例化的diaoyong实例.但是在构造函数里,this的作用是调用另外段察一个构造函数.java中在一个构造方法中可以调用一次其他的构造方法,并且这条语句必须在这个构造方法的第一行.

现在再来看this((int)x); 你可以握氏茄分开来看,首先括号里面 (int)x ,这里的x是public diaoyong(long x)的参数:long x,将一个long 类型的参数转成int ,也就是实际上,这一行就相当于作了一个this(3);的调用.

因为是int类型的参数,所以程序就跳转到public diaoyong(int x),这里执行了一个无参构造方法的调用,也就是执行 输出c的动作.这个执行完了,也就是public diaoyong(int x)的核察第一行执行结束,那么执行public diaoyong(int x)的第2行,也就是输出1个b.然后public diaoyong(int x)也结束了,就返回执行public diaoyong(long x)的第二行,也就是输出一个a

你能把这上面的好好理解之后,你也就自己发现了,实际上在构造方法里的this的用法,也是一样的"当前对象的引用"

PS: 一开始学的时候,建议设一个断点,然后一路F5,跟着去理解程序的执行流程.会很容易加深印象.
a51104433
2011-07-22
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
this指向的是当前对象的引用.可以对自身成员变量和方法的调用。

另外加一句 super指的是在子类中调用闹镇含父类的成员变量和方旅脊法

这两个液笑都是相通的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
thy777
2011-07-22 · TA获得超过125个赞
知道答主
回答量:71
采纳率:0%
帮助的人:34.2万
展开全部
c b a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式