我是初学者,目前正在阅读继承和多态性。我对关键字“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 中的 in i 完全不同?同样,我在新 B() 行之后无法遵循代码的“路径”。如果有人可以在调用 B() 后解释每个步骤,那将不胜感激。