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