0
public class Superclass {



    void method0(){
        System.out.println("superclass");
    }
}


public class Subclass extends Superclass{

    void method0(){
        System.out.println("subclass");
    }

    void method1(){
        super.method0();
    }

    void method2(){
        this.method0();
    }
}


public class RunClass {

    public static void main(String[] args){
        new Subclass().method1();
        new Subclass().method2();
    }
}

上面的代码打印出来

superclass
superclass

虽然我希望它打印出来

superclass
subclass

this.method0()不是引用 subclass 中的 method0 并打印出subclass而不是superclass吗?

4

4 回答 4

0

I ran your code and it gaves me

superclass
subclass

this what should printed every thing seems ok

于 2013-05-08T10:00:47.910 回答
0

super表示父类的实例。 this表示当前类的实例。它将打印
超类
子类

于 2013-05-08T09:58:02.513 回答
0

首先,它会打印出您所期望的内容。

第二,

this.method0() 不是引用子类中的method0并打印出子类而不是超类吗?

this=> 引用当前对象,使用它你可以使用它(有点指向自身的指针,一般来说)

super=> 引用层次结构中的超类对象,通常用于访问子类中的隐藏成员

于 2013-05-08T10:24:37.927 回答
0
new Subclass().method1();

执行method1()ofSubclass实例,然后调用super.method0();ie 父类实例的method0()ieSuperclass实例method0()

new Subclass().method2();

执行method2()ofSubclass实例,然后调用this.method0();ie 这个实例的method0()ie Subclassinstance method0()

super用于访问父类的实例成员,而this用于访问当前类的成员。

于 2013-05-08T10:03:17.673 回答