This, parámetros, argumentos, métodos con retorno, variables locales y globales.

Como se vio en el tema anterior, al utilizar los constructores se utilizó una palabra reservada “this”. Ésta palabra es muy importante y se utilizará muy a menudo de ahora en adelante. La palabra “this” es el modo en que Java hace referencia a una variable, objeto, método, etc. Todo de la misma clase.

 

 

Por ejemplo al crear un constructor:

public class Persona{
        private String nombre;
        private String apellidos;
        private String direccion;

        //Constructor
        public Persona(String nombre, String apellidos,String direccion){
                this.nombre=nombre;
                this.apellidos=apellidos;
                this.direccion=direccion;
        }
}

 

En el ejemplo anterior observamos que el nombre de las variable que se pasan como parámetro en el constructor tienen el mismo nombre que los atributos de la clase, en este caso la referencia con this a cada atributo hacen la diferencia entre guardar el valor en el atributo de la clase o que el valor se este sobrescribiendo a una misma variable, dejando vacia el valor de los atributos,por ejemplo, es incorrecto escribir:

public class Persona{
        private String nombre;
        private String apellidos;
        private String direccion;

        //Constructor
        public Persona(String nombre, String apellidos,String direccion){
                nombre=nombre;
                apellidos=apellidos;
                direccion=direccion;
        }
}

En éste caso estamos sobrescribiendo el valor de nombre de la variable que pasamos como parámetro, pero en ningún momento estamos haciendo uso de nuestros atributos de la clase, es decir cuando creemos un objeto, este objeto estará vacío.

 

 

Se puede omitir la declaración de this en algunas partes, por ejemplo si cambiamos el nombre de los parámetros.

public class Persona{
        private String nombre;
        private String apellidos;
        private String direccion;

        //Constructor
        public Persona(String nom, String ape,String dir){
                nombre=nom;
                apellidos=ape;
                direccion=dir;
        }
}

En esta ocasión Java toma como referencia a “nombre” como nuestro atributo y se le asigna el valor que se pasa como parámetro (nom), de misma forma las variables “apellidos” y “direccion”. En este momento al crear nuestro objeto por medio de este constructor el objeto no estará vacío, sino que se creara con los valores que se pasen como parámetro.

 

 

La palabra reservada “this” también puede ser usada para definir la llamada de un método.

Parámetros y argumentos

Una vez que se empieza a trabajar sobre objetos y métodos se empieza a utilizar estos dos término. Comúnmente se confunden estos dos términos y es el contexto lo que ayuda a diferenciarlos.

 

 

Un parámetro es una variable que se usa en la declaración de un método, por ejemplo en el constructor “Persona” se utilizan 3 parámetros, nom, ape y dir.

        //Constructor
        public Persona(String nom, String ape,String dir){
                nombre=nom;
                apellidos=ape;
                direccion=dir;
        }

A diferencia de un argumento que es el valor que se le da a estas variables cuando es llamado un método, por ejemplo:

 

Persona persona=new Persona(“Ana”,”Mendoza”,”Mexico D.F.”);

 

 

Para no confundirse es muy común entre programadores ver a un parámetro como una variable y a un argumento como un valor.

Métodos con retorno

El retorno de un método puede hacerse de tres maneras:

 

1.- Cuando el método finaliza.

2.- Cuando se encuentra con la sentencia “return”.

3.- Cuando se lanza una excepción.

 

Es muy común que en el retorno del método se encuentre el resultado de una operación, aunque puede ser utilizado para otros fines, como el detener la ejecución del mismo método, esto se hace mediante la sentencia “return”.

 

La sentencia return puede ser o no la última instrucción del cuerpo del método, además puede aparecer una o más veces. Se puede omitir la sentencia return en caso de que el método no retorne un valor (void).

 

 

Para indicar que un método va a retornar un valor se indica el tipo que va a retornar antes de escribir el nombre del método, puede ser un tipo primitivo o un tipo referenciado a una clase existente, ejemplo.

public int suma(int a, intb){
        return a+b;
}

 

En este caso estamos retornando la suma de dos números que son pasados con los parámetros a y b.

public String mensaje(String msj){
        return msj;
}

 

Éste método retorna un mensaje que entra como parámetro.

public void imprimirMensaje(String mensaje){
        System.out.println(mensaje);
}

 

En éste método no hay retorno de ningún dato.

Variables locales y globales.

Las variables locales son aquellas que se declaran dentro del cuerpo de un método o de un bloque de código (Un if, un ciclo,etc). Si nos ponemos a pensar son las que hemos estado usando en nuestros programas hasta el momento.

 

Las variables globales son aquellas que se declaran fuera de un método pero dentro de una clase, es decir, los atributos de una clase.

 

Hay pequeñas diferencias entre ellas y su uso dependen del programador.

 

Diferencias

 

Las variables globales se pueden usar en cualquier parte de la clase, incluso fuera de una clase o un paquete (Dependiendo de su modificador de acceso), sin embargo una variable local solo puede ser utilizada dentro del bloque de código donde fue creada y no lleva ningún modificador de acceso.

 

Las variables globales se inicializan por defecto (por ejemplo una variable global int se inicializa con 0), una variable local no se inicializa.

 

El tiempo de vida de una variable local dura hasta que termina de ejecutarse el bloque de código que la contiene, sin embargo, una variable global dura todo el tiempo de vida en que es usada una clase.

 

 

Las variables globales son muy útiles sobre todo porque pueden ser usadas en cualquier momento en una aplicación, sin embargo, las variables globales ocupan más espacio de memoria que una variable local (Y su tiempo de vida es mayor) y el uso de éstas deben ser las menores posibles para no aumentar la carga de memoria a nuestra aplicación.