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 意見:
張貼留言