2014-10-10 77 views
3

我正在讀一本書,並在Java中遇到了影子變量這個術語,但沒有任何說明。最終,這些變量用於什麼以及它們是如何實現的?什麼是Java中的影子變量?

+0

在Java中,有三種類型的變量:局部變量,實例變量和類變量。變量有其範圍。不同種類的變量有不同的範圍。如果在範圍內存在另一個具有相同名稱的變量,則會映射變量。換句話說,按名稱引用變量將使用範圍內最接近的變量,而外部範圍中的變量將被映射。 – SonalPM 2014-10-10 10:26:27

+0

在這篇文章中可以看到關於陰影的快速思考:http://stackoverflow.com/questions/8814153/overriding-interfaces-variable – lft93ryt 2017-03-21 07:38:07

回答

8

除了提供我自己的描述,我可能會要求您閱讀它,例如:http://en.wikipedia.org/wiki/Variable_shadowing。一旦你理解了變量的陰影,我建議你繼續閱讀關於覆蓋/陰影的方法和一般的可見性以充分理解這些術語。

實際上,因爲有人問在Java的條款這裏是一個小例子:

public class Shadow { 

     private int myIntVar = 0; 

     public void shadowTheVar(){ 

      // since it has the same name as above object instance field, it shadows above 
      // field inside this method 
      int myIntVar = 5; 

      // If we simply refer to 'myIntVar' the one of this method is found 
      // (shadowing a seond one with the same name) 
      System.out.println(myIntVar); 

      // If we want to refer to the shadowed myIntVar from this class we need to 
      // refer to it like this: 
      System.out.println(this.myIntVar); 
     } 

     public static void main(String[] args){ 
      new Shadow().shadowTheVar(); 
     } 
    } 
+0

儘量不要使用陰影變量。它混淆了代碼閱讀器。 – 2017-09-29 15:45:09