public class SimpleCalc {
public int value;
public void calculate() { value += 7; }
}
And:
public class MultiCalc extends SimpleCalc {
public void calculate() { value -= 3; }
public void calculate(int multiplier) {
calculate();
super.calculate();
value *= multiplier;
}
public static void main(String[] args) {
MultiCalc calculator = new MultiCalc();
calculator.calculate(2);
System.out.println("Value is: " + calculator.value);
}
}
What is the result?
A. Value is: 8
B. Compilation fails.
C. Value is: 12
D. Value is: -12
E. The code runs with no output.
F. An exception is thrown at runtime.
答案:A
解析:
這題不難
但就是要花一點耐心計算
首先在第二段程式 main() 裡 line 10 呼叫了 line 3
因 MultiCalc extends SimpleCalc
MultiCalc自動繼承了 int value
在 line 9 new 了一個 MultiCalc 的instance時
value初始值為0
line 4 呼叫了 line 2
value -= 3; → value = 0 - 3 = -3
line 5 呼叫了 第一段程式的 line 3
value += 7; → value = -3 + 7 = 4
line 6
value *= multiplier → value = 4 * 2 = 8
最後在 line 11 印出了
Value is: 8
0 意見:
張貼留言