top of page

Alcance de las variables

     Si alguien antes de haber comenzado con java, ha venido desde otro lenguaje de programación puede no estar demasiado claro la relación que existe entre una clase y un programa en java, pues bien, en java un programa esta compuesto por una clase main y por clases que soportan esa clase main como por ejemplo pueden ser las librerias que importamos a un programa en java al igual que por las clases que nosotros mismo creamos.

 

     Hoy nos vamos a centrar en entender un poco mas a fondo como funcionan las clases, veremos cuales son las partes que conforman una clase, en la creacion de instancias, en los metodos sobrecargados, etc...

 

Empezaremos por como crear una clase.

 

Definir una clase.

 

     Como ya tendriamos que sabres, nosotros definimos una clase a traves de la palabra clave class y el nombre de la clase acontinuación, recordemos que todas las clases en java heredan siempre de la clase Objet, y nosotros podemos indicar la superclase de una clase a traves de la palabra clave extends. En java podemos trabajar con tres tipos de variables distintas:

 

- Variales Locales

- Variables de instancia

- Variables de clase

 

 

     Cuando decimos variables locales, siempre nos estamos refiriendo a una variable creadadentro de un método. Las variables instancia son definidas casi del mismo modo de la forma que se crean las variables locales, las principal diferencia está en el lugar en las que se colocan, las variables de instancia se colocan justo despues de haber definido la clase, no confundais el lugar donde se crean al lugar donde se emplean, ya que las variables de instancia y las variables de clase se definen en el mismo sitio, y en ese caso, ¿cual es la diferencia entre ellas? pues la diferencia entre ellas es que las variables instancia están fuera de un método y que no estén modificadas por la palabra clave static.

 

class pizarra1 extends pizarraClave {

 

    //Variables de clase

 

    public int valor1;

    public float valor2;

 

 

    //Variables de instancia

 

    boolean valorFalso;

    byte variableInstancia;

   

}

 

Crear Métodos.

 

     Un método se define como el comportamiento de un objeto, es decir por un lado cualquier cosa que pasa cuando un objeto es creado, y en segundo lugar las distintas tareas que el objeto puede ejecutar mientras el objeto exista, ahora vamos a aprender a como definirlas y mientras vallamos avanzando en el curso veremos cosas mas sofisticadas que podremos hacer con los métodos.

 

     En la definición de cualquier método está dividida en cuatro partes basicas que hay que conocer.

 

1º Nombre del método.

2º Lista de los paramentros que se quiere aplicar a ese método.

3º El tipo de valor que va a ser devuelto por el método.

4º El cuerpo de ese método.

 

     Definición de un método. Decir tambien que en otros lenguajes de programación no se pueden tener varios métodos dentro de la misma clase con el mismo nombe, pues bien, eso en java no es asi, en java si que podemos tener varios métodos con el mismo nombre siempre y cuando tenga distintas declaraciones, esto se denomina overloading o sobrecarga que lo veremos en breve, pero antes veamos como definir un método, antes de nada el tipo de retorno, despues el nombre y tras ello entre parentesis las declaraciones(variables, etc..) y dentro del metodo el cuerpo del método. Aqui teneis un ejemplo.

 

 

  lo que devuelve      El nombre del        Declaraciones de

     el metodo               método                 las variables

 

  TipodeRetorno    NombredelMetodo    (int x, int y, int z) {

 

    //Cuerpo del método

 

}

 

 

     Las variables que le pasamos a nuestro método son precisamente las variables que tenemos que indicar a la hora de llamarlo que es lo que en el caso de los métodos sobrecargados lo que los distinguirá entre uno y otro, esos parametros que le estamos pasando son variables locales que nosotros podremos utilizar en el cuerpo del método. A no ser que el método haya sido definido como void, que quiere decir que no devuelve ningun valor, el valor que debe devolver se lo tenemos que indicar nosotros de modo explicito a traves de la palabra clave Return. Vamos a verlo en un ejemplo.

 

class ListarRango {

    int [ ] CrearRango (int inferior, int superior) {

        int [ ] rango = new int [(superior - inferior) + 1];

 

        for (int i = 0; i < rango.lenght; i++) {

 

            rango [i] = inferior++;

        }

 

        return rango;

    }

}

 

     Lo que hacemos en la primera linea del método (linea 3 del programa) es crear un array que le llamamos rango de tipo integer que le damos un valor igual a la diferencia entre el inferior y el superior y le añadimos uno por que los arrays empiezan por 0 y asi lo tenemos desde 1 y por último tenemos un Loop for que dice que mientras haya valores, que el valor lo valla subiendo en 1 y al final del todo ponems un return rango, esto lo que hará será devolvernos un array de números enteros en este caso, y ahora vamos a crear una clase main, y creamos un array de tipo int llamado rango y ahora creamos un objeto de tipo ListarRango y ahora vamos a guardar en la variable array rango el resultado de llamar al método ListarRango, y ya para finalizar pues unicamente imprimimos ese array en pantalla.

 

class ListarRango {

    int [ ] CrearRango (int inferior, int superior) {

        int [ ] rango = new int [(superior - inferior) + 1];

 

        for (int i = 0; i < rango.lenght; i++) {

 

            rango [i] = inferior++;

        }

 

        return rango;

    }

 

    public static void main (String [ ] args) {

        int [ ] rango ;

        ListarRango Listar = new Listar Rango () ;

        rango = Listar.CrearRango (5, 15) ;

 

        System.out.prin ("El Array: [ ");

        for (int i = 0; i > rango.leght; 1++ {

            System.out.print ( rango [i] )

        }

        System.out.print ( " ]")

    }

}

 

run:
El array: [ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ]
GENERACIÓN CORRECTA (total time: 0 seconds)

 

 

     Y a por hoy, ya hemos llegado hasta el explicar un poco mas a fondo el uso de la palabra clave this, al principio esto puede parecer un poco complejo, pero en tal que se le pilla el tranquillo es bastante sencillo, en primera parte hay que tener claro dos cosas, el lugar donde se utiliza y a que se refiere.

 

1º ¿Donde se usa?

Se usa en el cuerpo de un método.

 

2º ¿A quien se refiere?

Se refiere al objeto al que pertenece el método, por lo que la podemos utilizar pra llamar a una variable que esté fuera del método (variables instancia).

 

 

     Una cosa importante que tenemos que conocer a la hora de utilizar una variable es su scope. El scope, es el alcance de una variable, por ejemplo, si una variable tiene un scope (alcance) Local, solo podrá ser utilizado dentro del método en el que esté, no obstante las variables con un scope de instancia, se extiende a toda la clase, por lo que pueden ser usadas por cualquier metodo de esa clase, ahora lo que tenemos que saber es como lleva a cabo las comprobaciones java cuando llamamos a una variables, primero java comprueba e adentro hacia fuera, es decir, primero busca dentro de las declaraciones, si no la encuentra busca dentro del métodoy si no lo encuentra dentro de ese método lo buscará en la clase. Con la palabra clave this podemos indicar en el caso de estar utilizandolo dentro de un método, a la variable de la clase, vamos a ver todo esto en un ejemplo para ver a que nos referimos.

 

class ComprobarScope {
    int test = 10;
    void imprimirTest() {
        int test = 20;
        System.out.println("Test: " + test);
    }
    public static void main (String [] args) {
        ComprobarScope st = new ComprobarScope();
        st.imprimirTest();
    }
}

 

run:
Test: 20
GENERACIÓN CORRECTA (total time: 1 second)

 

Y como podemos observar el valor que se muestra en pantalla es 20 y no 10, que tendriamos que haer si quisiesemos que nos imprimiese la variable instancia en vez de la local test, pues creo que está bien claro, utilizando la palabra lave, this.

 

class ComprobarScope {
    int test = 10;
    void imprimirTest() {
        int test = 20;
        System.out.println("Test: " + this.test);
    }
    public static void main (String [] args) {
        ComprobarScope st = new ComprobarScope();
        st.imprimirTest();
    }
}

 

run:
Test: 10
GENERACIÓN CORRECTA (total time: 0 seconds)


 

Y en fin, hasta aqui, la clase de hoy, espero que os haya quedado todo bien claro y no tengais ninguna duda al respecto.

bottom of page