SCJP(OCPJP) 考古題解析 第30題

Given:

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.


答案:


解析:

這題不難

但就是要花一點耐心計算



首先在第二段程式 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 意見:

張貼留言