【用戶】洪小漢
【年級】高二上
【評論內容】遮蔽(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 }}