Given the definition of the Vehicle class:



and this code fragment:

What is the result?

A.

Velocity with new speed 1 kmph

B. A compilation error occurs at line n1.
C. A compilation error occurs at line n2.
D. A compilation error occurs at line n3.

題解

Java 8之後的版本,允許方法內的區域內部類別(local inner class),使用方法內的區域變數而不一定要是常數,但僅能取得變數數值,無法更改變數數值。

在這個題目中,Vehicle類別和其方法內的區域內部類別Car,都可以正常的編譯。

程式實體化出Vehicle物件之後,會透過建構子將distance物件欄位設為100。接著使用Vehicle物件的increSpeed方法,呼叫其Car區域內部類別物件中的speed方法,設定value變數的值為distance欄位的值100,再除上傳入increSpeed方法的參數值60。由於變數型態均為整數,因此進行除法運算時,會自動捨棄掉小數點的部份,value變數的值會被重新指派為1。程式第17行,將value的值輸出。