class A1
{
public String desc;
public void method()
{
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……我是菜鸟级,看不懂呀!!
      

  2.   

    今天我正好遇到这个问题。输出c,为正确答案。调用的是c1对象的方法。getDesc();//其实是c1那个对象中的getDesc();方法,不是A1中的方法。希望楼主能给分啊。
    ^_^
      

  3.   

    这样说吧:class A1 {
    public String desc; public void method() {
    desc = this.getDesc();
    } public String toString() {
    return this.desc;
    } public String getDesc() {
    return "a";
    }
    }class B1 extends A1 {
    @Override
    public void method() {
    super.method();
    }

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

    @Override
    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在上面。
    表示当前对象调用的。
      

  4.   

    此程序虽是自己写的,但对this和super还是没完全掌握,Java技术支持那位高人可否帮忙详解一下程序来龙去脉啊,最好详细讲解一下this和super,我在书上貌似找不到全面的答案