单选题:分析如下代码,正确的选项是( )。
分析如下代码,正确的选项是( )。 @[D](2)
```
public class Test {
public static void main(String[] args) {
new B();
}
}
class A {
int i = 7;
public A() {
setI(20);
System.out.println("i from A is " + i);
}
public void setI(int i) {
this.i = 2 * i;
}
}
class B extends A {
public B() {
// System.out.println("i from B is " + i);
}
@Override
public void setI(int i) {
this.i = 3 * i;
}
}
```
A. A的构造方法未被调用。
B. A的构造方法被调用,并且输出 "i from A is 7"。
C. A的构造方法被调用,并且输出 "i from A is 40"。
D. A的构造方法被调用,并且输出 "i from A is 60"。
A.A的构造方法未被调用。
B.A的构造方法被调用,并且输出 "i from A is 7"。
C.A的构造方法被调用,并且输出 "i from A is 40"。
D.A的构造方法被调用,并且输出 "i from A is 60"。
答案:D
```
public class Test {
public static void main(String[] args) {
new B();
}
}
class A {
int i = 7;
public A() {
setI(20);
System.out.println("i from A is " + i);
}
public void setI(int i) {
this.i = 2 * i;
}
}
class B extends A {
public B() {
// System.out.println("i from B is " + i);
}
@Override
public void setI(int i) {
this.i = 3 * i;
}
}
```
A. A的构造方法未被调用。
B. A的构造方法被调用,并且输出 "i from A is 7"。
C. A的构造方法被调用,并且输出 "i from A is 40"。
D. A的构造方法被调用,并且输出 "i from A is 60"。
A.A的构造方法未被调用。
B.A的构造方法被调用,并且输出 "i from A is 7"。
C.A的构造方法被调用,并且输出 "i from A is 40"。
D.A的构造方法被调用,并且输出 "i from A is 60"。
答案:D