問題詳情

21. 在Java語言中,若類別(Class)中的成員變數(Member Variable/Field)與方法(Method)中的區域變數(Local Variable),因為名稱相同產生陰影效應(Shadowing),下列何者為真?
(A)使用區域變數
(B)使用成員變數
(C)隨機使用成員變數或區域變數
(D)程式無法編譯

參考答案

答案:A
難度:計算中-1
書單:沒有書單,新增

用户評論

【用戶】洪小漢

【年級】高二上

【評論內容】遮蔽(Shadow)與重新定義(Override)所謂遮蔽(Shadow),是指在某變數可視範圍內,定義了同名變數,在後者的可視範圍中,取用同一名稱時所用的是後者的定義。例如:val x = 10{ val x = 20 println(x) // 顯示 20}println(x) // 顯示 10Scala支援區塊可視範圍,在上例中,{}區塊外宣告了一個x變數,而區塊內也宣告了一個x變數,在區塊中x的變數定義遮蔽了區塊外的x定義。如果你熟悉Java,你會知道這樣的情況在Java中是允許的:class A {    protected int x = 10;}class B extends A {    public int x = 20;   // 這邊 x 遮蔽了 A 類別中的 x}public class Main {    public static void main(String[] args) {        B b = new B();        A a = b;        System.out.println(b.x);    // 顯示 20        System.out.println(a.x);    // 顯示 10    }}