0

私は2つのクラスを持っています:

class A{
    method(){}
}
class B extends A{
    @Override
    method(){
        super.method();
        //some logic
    }
}

そして私は3番目のものを作成しました:

class C extends B{
       @Override
       method(){
       super.method();
       //more logic
    }
}

しかし、「何らかのロジック」が実行されるかどうかはわかりません。クラスの拡張とメソッドのオーバーライドに関する良いチュートリアルを教えてください。

4

3 に答える 3

3

拡張メソッドの super () クラスを呼び出すと、拡張 (親) メソッドが強制的に呼び出されます。

ここに良い継承チュートリアルがあります http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

于 2013-06-16T18:18:17.693 に答える
1

のインスタンスを呼び出すと、//some logicとの両方が//more logic実行されます。しかし、私の言葉を鵜呑みにしてはいけません。何が起こっているかを確認するには、これらのことを試してくださいmethodC

  • print ステートメントを追加して、実行中のコードのビットを表示します
  • プログラムをコンパイルし、 を使用javap -c Cして逆アセンブルして、実行されているコードを確認します。スーパー メソッドの呼び出しと、それに続くいくつかのコードが表示されます。メソッドを実行すると、他のメソッド呼び出しと同じようにこのスーパー メソッドが呼び出され、通常どおり戻り、続行されます。
于 2013-06-16T18:18:03.590 に答える