長い間戸惑っていた問題です

2037 ワード

次のコード:
package com.lk.C;



public class Test5 {

    public static void main(String[] args) {

        go(new MyBase());

    }

    static void go(Base b){

        b.add(8);

    }

}

class Base{

    int i;

    Base(){

        add(1);

        System.out.println(i);

    }

    void add(int v){

        i = i+v;

        System.out.println(i);

    }

    void print(){

        System.out.println(i);

    }

}



class MyBase extends Base{

    MyBase(){

        add(2);

    }

    void add(int v){

        i += v*2;

        System.out.println(i);

    }

}
2

2

6

22

Java初心者1枚、誰かが解答することを望みます:
私はデバッグして、歩く順序:親クラスの構造関数内のadd(1)メソッドを歩くとき、どうして親クラスのadd()メソッドを呼び出すのではなく、子クラスのadd()メソッドを呼び出すのですか?したがって、最初の出力は2です.