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 ()はサブクラスの method0 を参照し、スーパークラスではなくサブクラスを出力していませんか?

4

4 に答える 4

0

super親クラスのインスタンスを表します。 this現在のクラスのインスタンスを表します。
スーパークラスの
サブクラスを出力します

于 2013-05-08T09:58:02.513 に答える
0

まず第一に、それはあなたが期待しているものを出力します。

2番、

this.method0() は、サブクラスで method0 を参照し、スーパークラスではなくサブクラスを出力していませんか?

this=>現在のオブジェクトを参照し、それを使用して使用できます(一般的には、それ自体へのポインターのようなものです)

super=> 階層内のスーパー クラス オブジェクトを参照し、通常はサブクラス内の隠しメンバーにアクセスするために使用されます

于 2013-05-08T10:24:37.927 に答える
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
new Subclass().method1();

method1()ofインスタンスを実行し、次に、親クラスのインスタンスのieインスタンスSubclassを呼び出します。super.method0();method0()Superclassmethod0()

new Subclass().method2();

method2()ofインスタンスを実行し、次に、このインスタンスのie instanceSubclassを呼び出します。this.method0();method0()Subclassmethod0()

superは親クラスのインスタンス メンバーにアクセスするためにthis使用され、 は現在のクラスのメンバーにアクセスするために使用されます。

于 2013-05-08T10:03:17.673 に答える