動手動腦——同名變數的遮蔽原則

仙人兵马俑發表於2024-09-27

在Java中,變數的“同名變數的遮蔽原則”通常指的是變數作用域的問題。當在不同的作用域中定義了同名的變數時,內部作用域的變數會“遮蔽”外部作用域的變數。這意味著在內部作用域中訪問該變數名時,將會訪問到內部作用域中定義的變數,而不是外部作用域中的變數。
下面是一個簡單的示例,展示了變數的遮蔽原則:
public class VariableShadowingExample {
int outerVar = 10; // 定義一個類變數

public void methodOne() {
    int outerVar = 20; // 定義一個方法變數,與類變數同名
    System.out.println("In methodOne, outerVar = " + outerVar); // 輸出20
    methodTwo();
}

public void methodTwo() {
    int outerVar = 30; // 定義一個方法變數,與類變數和methodOne中的變數同名
    System.out.println("In methodTwo, outerVar = " + outerVar); // 輸出30
}

public static void main(String[] args) {
    VariableShadowingExample v = new VariableShadowingExample();
    int outerVar = 40; // 定義一個區域性變數,與類變數同名
    System.out.println("In main, outerVar = " + outerVar); // 輸出40
    v.methodOne();
}

}
在這個示例中,我們定義了一個類變數outerVar,然後在methodOne方法中定義了一個同名的區域性變數,接著在methodOne方法內部呼叫的methodTwo方法中又定義了一個同名的區域性變數。最後,在main方法中也定義了一個同名的區域性變數。
輸出結果將會是:
In main, outerVar = 40
In methodOne, outerVar = 20
In methodTwo, outerVar = 30
從輸出結果可以看出,每個作用域中的outerVar變數都遮蔽了外部作用域中的同名變數。

相關文章