quinta-feira, 10 de novembro de 2011

Sombreamento de Variáveis

Enquanto estudava ... gostei de um tópico interessante sobre sombreamento de variáveis (redeclarar uma variável que já tinha sido declarada anteriormente em algum outro local), que ao meu ver muitas pessoas como eu ficam as vezes na duvida se realmente o resultado da resposta estava certo...pois parece estarmos usando a variável oculta e no entanto estamos usando a variável de sombreamento.


Segue abaixo exemplos:


public class Foo {
 int size = 7;
 void changeIt(int size){
  size = size + 200;
  System.out.println("Tamanho no changeIt é "+size);
 }
 public static void main(String[] args) {
  Foo foo = new Foo();
  System.out.println("Valor de size "+foo.size);
  foo.changeIt(foo.size);
  System.out.println("Valor de size depois do changeIt "+foo.size);
 }
}

Resultado:
Valor de size 7
Tamanho no changeIt é 207
Valor de size depois do changeIt 7


public class Bar {
 int barNum = 28;
}

public class Foo2 {
 Bar myBar = new Bar(); 
 
 void changeIt(Bar myBar){
  myBar.barNum = 99;
  System.out.println("myBar no changeIt é "+myBar.barNum);
  myBar = new Bar();
  myBar.barNum = 400;
  System.out.println("myBar no changeIt é agora "+myBar.barNum);
 }
 public static void main(String[] args) {
  Foo2 foo2 = new Foo2();
  System.out.println("foo2.myBar.barNum no changeIt é "+foo2.myBar.barNum);
  foo2.changeIt(foo2.myBar);
  System.out.println("myBar.barNum depois do changeIt é "+foo2.myBar.barNum);

 }
}


Resultado:
foo2.myBar.barNum no changeIt é 28
myBar no changeIt é 99
myBar no changeIt é agora 400
myBar.barNum depois do changeIt é 99




Nenhum comentário:

Postar um comentário