## Declarar Variables Miembro

Como mínimo, una declaración de variable miembro tiene dos componentes: el tipo de dato y el nombre de la variable.

    tipo nombreVariable;        // Declaración mínima de una variable miembro

Una declaración mínima de variable miembro es como la declaración de variables que se escribe en cualquier otro lugar de un programa Java, como las variables locales o parámetros de métodos. El siguiente código declara una variable miembro entera llamada unEntero dentro de la clase ClaseEnteros.

    class ClaseEnteros {
        int unEntero;
        . . .
        // define los métodos aquí
        . . .
    }

Observa que la declaración de variables miembro aparece dentro de la implementación del cuerpo de la clase pero no dentro de un método. Este posicionamiento dentro del cuerpo de la clase determina que una variable es una variable miembro.

Al igual que otras variables en Java, las variables miembro deben tener un tipo. Un tipo de variable determina los valores que pueden ser asignados a las variables y las operaciones que se pueden realizar con ellas. Ya deberías estar familiarizado con los tipos de datos en Java mediante la lectura de la lección anterior: Variables y Tipos de Datos.

Un nombre de una variable miembro puede ser cualquier identificador legal de Java y por convención empieza con una letra minúscula (los nombres de clase típicamente empiezan con una letra mayúscula). No se puede declarar más de una variable con el mismo nombre en la misma clase. Por ejemplo, el siguiente código es legal:

    class ClaseEnteros {
        int unEntero;
        int unEntero() {        // un método con el mismo nombre que una variable
            . . .
        }
    }

Junto con el nombre y el tipo, se pueden especificar varios atributos para las variables miembro cuando se las declara: incluyendo si los objetos pueden acceder a la variable, si la variable es una variable de clase o una variable de ejemplar, y si la variable es una constante.

Una declaración de variable se podría parecer a esto:

    [especificadordeAcceso] [static] [final] [transient] [volatile] tipo nombredeVaraible

Los puntos entre [ y ] son opcionales. Lo items en negrita se deben reemplazar por palabras clave o por nombres.

Una declaración de variable miembro define los siguientes aspectos de la variable:

- especificadordeAcceso define si otras clases tienen acceso a la variable. Se puede controlar el acceso a los métodos utilizando los mismos especificadores, por eso Controlar el Acceso a Variables Miembro de una Clase cubre cómo se puede controlar el acceso a las variables miembro o los métodos.
- static indica que la variable es una variable miembro de la clase en oposición a una variable miembro del ejemplar. Se puede utilizar static para declarar métodos de clase. Miembros de Clase y de Ejemplar explica la declaración de variables de clase y de ejemplar y escribir métodos de ejemplar o de clase.
- final indica que la variable es una constante
- transient la variable no es una parte persistente del estado del objeto
- volatile significa que la variable es modificada de forma asíncrona.

La explicación de las variables final, transient, y volatile viene ahora:

### Declarar Constantes

> Para crear una variable miembro constante en Java se debe utilizar la palabra clave final en su declaración de variable. La siguiente declaración define una constante llamada AVOGADRO cuyo valor es el número de Avogadro (6.023 x 10^23) y no puede ser cambiado:

>     class Avo {
>         final double AVOGADRO = 6.023e23;
>     }

> Por convención, los nombres de los valores constantes se escriben completamene en mayúsculas. Si un programa intenta cambiar una variable, el compilador muestra un mensaje de error similar al siguiente, y rehusa a compilar su programa.

>     AvogadroTest.java:5: Can't assign a value to a final variable: AVOGADRO

### Declarar Variables Transitorias

> Por defecto, las variables miembro son una parte persistente del estado de un objeto, Las variables que forman parte persistente del estado del objeto debe guardarse cuando el objeto se archiva. Se puede utilizar la palabra clave transient para indicar a la máquina virtual Java que la variable indicada no no es una parte persistente del objeto.

> Al igual que otros modificadors de variables en el sistema Java, se puede utilizar transient en una clase o declaración de variable de ejemplar como esta:

>     class TransientExample {
>         transient int hobo;
>         . . .
>     }

> Este ejemplo declara una variable entera llamda hobo que no es una parte persistente del estado de la claseTransientExample.

### Declarar Variables Volatiles

> Si una clase contiene una variable miembro que es modificada de forma asíncrona, mediante la ejecución de threads concurrentes, se puede utilizar la palabra clave volatile de Java para notificar esto al sistema Java.

> La siguiente declaración de variable es un ejemplo de como declarar que una variable va a ser modificada de forma asíncrona por threads concurrentes:

>     class VolatileExample {
>         volatile int contador;
>         . . .
>     }

Ozito