##
VARIABLES Y METODOS DE INSTANCIA

Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones.

Por ejemplo, en el siguiente trozo de código podemos observarlo:

        public MiClase {
             int i;
             public MiClase() {
                 i = 10;
                 }
             public void Suma_a_i( int j ) {
                 i = i + j;
                 }
             }

La clase MiClase contiene una variable (`i`) y dos métodos, MiClase que es el constructor de la clase y Suma_a_i( int j ).

### Ambito de una variable

Los bloques de sentencias compuestas en Java se delimitan con dos llaves. Las variables de Java sólo son válidas desde el punto donde están declaradas hasta el final de la sentencia compuesta que la engloba. Se pueden anidar estas sentencias compuestas, y cada una puede contener su propio conjunto de declaraciones de variables locales. Sin embargo, no se puede declarar una variable con el mismo nombre que una de ámbito exterior.

El siguiente ejemplo intenta declarar dos variables separadas con el mismo nombre. En C y C++ son distintas, porque están declaradas dentro de ámbitos diferentes. En Java, esto es ilegal.

    Class Ambito {
        int i = 1;        // ámbito exterior
            {             // crea un nuevo ámbito
            int i = 2;    // error de compilación
            }
        }

### Métodos y Constructores

Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.

Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase.

Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase:

        MiClase mc;
        mc = new MiClase();

La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo. Después de ser instanciado un nuevo objeto `mc`, el valor de `i` en el objeto `mc` será igual a 10. Se puede referenciar la variable (de instancia) `i` con el nombre del objeto:

        mc.i++; // incrementa la instancia de i de mc

Al tener `mc` todas las variables y métodos de MiClase, se puede usar la primera sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de clase mc:

        mc.Suma_a_i( 10 );

y ahora la variable `mc.i` vale 21.

### Finalizadores

Java no utiliza destructores (al contrario que C++) ya que tiene una forma de recoger automáticamente todos los objetos que se salen del alcance. No obstante proporciona un método que, cuando se especifique en el código de la clase, el reciclador de memoria (garbage collector) llamará:

        // Cierra el canal cuando este objeto es reciclado
        protected void finalize() {
            close();
            }

|  | ##### [Anterior] [Indice] [Siguiente]