Error común de programación 8.9

Si un programa trata de importar métodos 

static

 que tengan la misma fi rma, o campos 

static

 que tengan el 

mismo nombre, de dos o más clases, se produce un error de compilación.

8.13 Variables de instancia 

final

El 

principio del menor privilegio

 es fundamental para la buena ingeniería de software. En el contexto de una 

aplicación, el principio establece que al código sólo se le debe otorgar tanto privilegio y acceso como necesite 
para llevar a cabo su tarea designada, pero no más. Veamos ahora cómo se aplica este principio a las variables de 
instancia.

Algunas variables de instancia necesitan modifi carse, mientras que otras no. Usted puede utilizar la palabra 

clave 

final

 para especifi car que una variable no puede modifi carse (es decir, que sea una constante) y que cualquier 

intento por modifi carla sería un error. Por ejemplo,

private final int

INCREMENTO

;

declara una variable de instancia 

final

 (constante) llamada 

INCREMENTO

, de tipo 

int

. Aunque las constantes se 

pueden inicializar al momento de declararse, no es obligatorio. Las constantes pueden inicializarse mediante cada 
uno de los constructores de la clase.

Observación de ingeniería de software 8.13

Declarar una variable de instancia como 

final

 ayuda a hacer valer el principio del menor privilegio. Si una variable 

de instancia no debe modifi carse, declárela como 

final

 para evitar su modifi cación.

Nuestro siguiente ejemplo contiene dos clases: 

Incremento

 (fi gura 8.15) y 

PruebaIncremento

 (fi gura 8.16). 

La clase 

Incremento

contiene una variable de instancia 

final

 de tipo 

int

,llamada 

INCREMENTO

 (fi gura 8.15, 

línea 7). Observe que la variable 

final

 no se inicializa en su declaración, por lo que debe inicializarse mediante 

el constructor de la clase (líneas 9 a 13). Si la clase proporcionara varios constructores, cada constructor tendría 
que inicializar la variable 

final

. El constructor recibe el parámetro 

valorIncremento

 de tipo 

int

 y asigna su 

valor a 

INCREMENTO

 (línea 12). Una variable 

final

 no puede modifi carse mediante una asignación, una vez que se 

inicializa. La clase de aplicación 

PruebaIncremento

 crea un objeto de la clase 

Incremento

 (fi gura 8.16, línea 8), 

y proporciona el valor 

5

como argumento para el constructor, el cual se asigna a la constante 

INCREMENTO

.

 1 

// Fig. 8.15: Incremento.java

 2 

// variable de instancia final en una clase.

 3
 4 

public class

 Incremento 

 5 

{

 6  

private int

 total = 

0

;

// el total de todos los incrementos

 7  

private final int

INCREMENTO

;

// variable constante (sin inicializar)

 8
 9  

// el constructor inicializa la variable de instancia final INCREMENTO

 10  

public

 Incremento( 

int

 valorIncremento )

 11  

{

 12  

 

INCREMENTO

 = valorIncremento; 

// inicializa la variable constante (una vez)

 13  

}

// fin del constructor de Incremento

 14
 15  

// suma INCREMENTO al total

 16  

public void

 sumarIncrementoATotal()

 17  

{

 18  

 

total += 

INCREMENTO

;

 19  

}

// fin del método sumarIncrementoATotal 

 20
 21  

// devuelve representación String de los datos de un objeto Incremento

Figura 8.15

  |  Variable de instancia 

final

 en una clase. (Parte 1 de 2).

8.13 Variables de instancia 

final

351

08_MAQ_CAP_08.indd351

4/19/081:23:54AM