0
public class Superclass{

    void method1(){
        method0();
    }

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

}



public class Subclass extends Superclass{

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

}


public class Runclass{

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

}

このコードはサブクラスを出力します。

だとしましょう

new Superclass().method1();

次に、出力されます-スーパークラス

メソッドを呼び出すインスタンスに依存して呼び出されるメソッドですか?

4

6 に答える 6

1

どのオブジェクト メソッドが呼び出されるかによって異なります。メソッドが親オブジェクトで呼び出された場合、親メソッドが呼び出されますが、メソッドが子オブジェクトで呼び出された場合、子クラスのメソッドが呼び出されます。メソッドがオーバーライドされていない場合、常に親クラスのメソッドが呼び出されます。

于 2013-05-11T09:21:45.523 に答える
0

ポリモーフィズム。

これを忘れたかも

public class Subclass extends ParentClass{

子クラスでメソッドをオーバーライドしない限り、それは呼び出しのみを行いparent methodます。

new Superclass().method1();

ここにスーパークラスのインスタンスがあるので、スーパークラスの method1呼び出し

そして、あなたが電話すれば

 new Subclass().method1();

subclassesオーバーベリデン method1コール。

そして、明確な画像のためにこのチュートリアルを提案したいと思います.

于 2013-05-11T09:20:44.190 に答える
0
public class SubClass extends SuperClass {
    @Override
    public void print() {
        System.out.println("SubClass");
    }

    public static void main(String[] args) {
        SuperClass obj = new SubClass();
        obj.print();
    }
}

class SuperClass {

    SuperClass() {
        print();
    }

    public void print() {
        System.out.println("SuperClass");
    }
}

上記のコードは次のように表示されます。

SubClass
SubClass
SubClass

覚えておくべき重要なことは、実行されるメソッドは、参照変数の型ではなく、実際のオブジェクトの型に基づいて、実行時に JVM によって決定されるということです。ここで、クラス SubClass のオブジェクトが作成されると、最初にサブクラスのデフォルト コンストラクターが呼び出され、スーパークラスのコンストラクターが呼び出されます。次に、SuperClass のコンストラクターが print() を呼び出します。ここでは、実際のオブジェクトのクラスが SubClass であるため、SuperClass の print ではなく、SubClass の print が選択されます。

于 2022-02-20T10:22:28.697 に答える
0

サブクラスはスーパークラスを拡張する必要があります:

public class Subclass extends SuperClass{

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

}

呼び出しSubClass().method()の優先順位がサブクラスのメソッドになる場合、出力は次のようになります。

サブクラス

しかし、この場合:

public class Subclass extends SuperClass{

    }

出力は次のようになります。

スーパークラス

于 2013-05-11T09:33:45.093 に答える