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

2024-12-15 00:13:34
推荐回答(3个)
回答1:

首先你应该明确,下面的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,跟着去理解程序的执行流程.会很容易加深印象.

回答2:

this指向的是当前对象的引用.可以对自身成员变量和方法的调用。

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

这两个都是相通的

回答3:

c b a