日期:2014-05-20  浏览次数:20765 次

小弟初学,半夜睡不着写了一个测试this的程序,有大牛能详细阐述一下this关键字在方法中引用调用该方法的对象(注:多层调用)此时this指的到底是什么?
小弟初学,半夜睡不着写了一个测试this的程序,有大牛能详细阐述一下this关键字在方法中引用调用该方法的对象(注:多层调用)此时this指的到底是什么?望高人详解
class A1
{
public String desc;
public void method()
{
this.desc =getDesc();
}

public String toString(){
return desc;
}
public String getDesc()
{
return "a";
}
}

class B1 extends A1
{
public void method()
{
super.method();
}
public String getDesc()
{
return "b";
}
}

class C1 extends B1
{
public void method()
{
super.method();
}
public String getDesc()
{
return "c";
}
}

public class TestThis2
{
public static void main(String[] args){
C1 c1 =new C1();
c1.method();
System.out.println(c1);
B1 b1 =new B1();
b1.method();
System.out.println(b1);
A1 a1 =new A1();
a1.method();
System.out.println(a1);
}
}


------解决方案--------------------
本来想去网上收集点资料然后贴上去的。
但是看到网上好多讲的也很垃圾,都是网友上传的。

好吧:)
this:
用的地方:在构造方法中(调用另外一个构造方法,但是需要有个出口,不知道楼主知不知道为什么)
在成员方法中,不能再static方法中
为什么在成员方法中呢?
因为this代表的是当前对象,而对象是在类被实例化的时候有的。
但是静态的方法是属于类的,是在类加载、初始化后有的(这时候对象还没有)

也就是说this是在有对象的情况下使用的。
而static是直接类名.来调用的。
不知道楼主能不能理解

------解决方案--------------------
探讨

this在哪个类里,就代表是哪个类的一个具体对象。
所以现在this指的是A1类的一个具体对象。