小弟初学,半夜睡不着写了一个测试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);
}
}

解决方案 »

  1.   

    本来想去网上收集点资料然后贴上去的。
    但是看到网上好多讲的也很垃圾,都是网友上传的。好吧:)
    this:
    用的地方:在构造方法中(调用另外一个构造方法,但是需要有个出口,不知道楼主知不知道为什么)
    在成员方法中,不能再static方法中
    为什么在成员方法中呢?
    因为this代表的是当前对象,而对象是在类被实例化的时候有的。
    但是静态的方法是属于类的,是在类加载、初始化后有的(这时候对象还没有)也就是说this是在有对象的情况下使用的。
    而static是直接类名.来调用的。
    不知道楼主能不能理解
      

  2.   

    我关心this具体指向问题啊,当创建C对象时输出结果。。
      

  3.   

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

  4.   

    http://bbs.ednchina.com/BLOG_ARTICLE_17694.HTM