3
我正在讀一本書,並在Java中遇到了影子變量這個術語,但沒有任何說明。最終,這些變量用於什麼以及它們是如何實現的?什麼是Java中的影子變量?
我正在讀一本書,並在Java中遇到了影子變量這個術語,但沒有任何說明。最終,這些變量用於什麼以及它們是如何實現的?什麼是Java中的影子變量?
除了提供我自己的描述,我可能會要求您閱讀它,例如: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();
}
}
儘量不要使用陰影變量。它混淆了代碼閱讀器。 – 2017-09-29 15:45:09
在Java中,有三種類型的變量:局部變量,實例變量和類變量。變量有其範圍。不同種類的變量有不同的範圍。如果在範圍內存在另一個具有相同名稱的變量,則會映射變量。換句話說,按名稱引用變量將使用範圍內最接近的變量,而外部範圍中的變量將被映射。 – SonalPM 2014-10-10 10:26:27
在這篇文章中可以看到關於陰影的快速思考:http://stackoverflow.com/questions/8814153/overriding-interfaces-variable – lft93ryt 2017-03-21 07:38:07