121.Ocultación [hiding] (concepto)

Si tenemos un ámbito de visibilidad A1 y definimos un ámbito A2 dentro de A1, las variables definidas en A2 ocultan a las variables homónimas de A1.

Ejemplo:

1 class C {

2    private int x;

3    public void metodo(int x) {  

5       this.x = x;

6    }

7  }

Ámbito clase: líneas 1-7.

Ámbito metodo: líneas 3-6.

La x del ámbito clase (declarada en la línea 2) queda oculta por la x del ámbito método (declarada en la línea 3).

El uso de THIS permite que en la línea 5 el valor de la x del método pase a la x de la clase.

11 class C {

12    private int x1;

13    public void metodo(int x2) {  

15       this.x1 = x2;

16    }

17  }

 

Este bloque de código (11-17) hace exactamente lo mismo que el bloque (1-7) pero sin problemas de visibilidad.

20   int m;

21   for (int m= 0; m < …; m++) {  

22      metodo(m);

23   }

La m declarada en la línea 20 queda oculta por la m declarada en la línea 21 en el ámbito del for (líneas 21-23).

La m de las línea 21 y 23 se refieren a la declaración en el ámbito más estrecho: la de la línea 21.

 

Ver "ocultación | redefinición".

Temas relacionados

Vademécum