私は初心者で、現在継承とポリモーフィズムを読んでいます。「extend」というキーワードと、コンストラクターの呼び出し方法に関して、いくつかの混乱があります。コードは次のとおりです。
public class Test {
public static void main(String[] args) {
new B();
}
}
class A {
int i = 7;
public A() {
System.out.println("i from A is " + i);
}
public void setI(int i) {
this.i = 2 * i;
}
}
class B extends A {
public B() {
setI(20);
System.out.println("i from B is " + i);
}
public void setI(int i) {
this.i = 3 * i;
}
}
3 行目で B() を呼び出すと、クラス A のコンストラクターが呼び出され、次に B のコンストラクターが呼び出されて (そうですか?)、「A からの i は 7」、「B からの i は 60」と表示されます。しかし、誰かがこれの重要性を説明できますか? B の int i が A の i とまったく異なるのはなぜですか? 繰り返しますが、new B() 行の後のコードの「パス」をたどるのに問題があります。B() が呼び出された後の各ステップを誰かが説明できれば、それは大歓迎です。