TutorJava Nivel Básico

En el siguiente ejemplo, el cuerpo de m�todo para los m�todos estaVacio() y poner() est�n en negrita.

class Stack {
    static final int PILA_VACIA = -1;
    Object[] elementosPila;
    int elementoSuperior = PILA_VACIA;
    . . .
    boolean estaVacio() {
        if (elementoSuperior == PILA_VACIA)
            return true;
        else
            return false;
    }
    Object poner() {
        if (elementoSuperior == PILA_VACIA)
            return null;
        else {
            return elementosPila[elementoSuperior--];
        }
    }
}

Junto a los elementos normales del lenguaje Java, se puede utilizar this en el cuerpo del m�todo para referirse a los miembros del objeto actual.

El objeto actual es el objeto del que uno de cuyos miembros est� siendo llamado. Tambi�n se puede utilizar super para referirse a los miembros de la superclase que el objeto actual haya ocultado mediante la sobreescritura. Un cuerpo de m�todo tambi�n puede contener declaraciones de variables que son locales de ese m�todo.

.�this

Normalmente, dentro del cuerpo de un m�todo de un objeto se puede referir directamente a las variables miembros del objeto. Sin embargo, algunas veces no se querr� tener ambig�edad sobre el nombre de la variable miembro y uno de los argumentos del m�todo que tengan el mismo nombre.

Por ejemplo, el siguiente constructor de la clase HSBColor inicializa alguna variable miembro de un objeto de acuerdo a los argumentos pasados al constructor. Cada argumento del constructor tiene el mismo nombre que la variable del objeto cuyo valor contiene el argumento.

class HSBColor {
    int hue, saturacion, brillo;
    HSBColor (int luminosidad, int saturacion, int brillo) {
        this.luminosidad = luminosidad;
        this.saturacion = saturacion;
        this.brillo = brillo;
    }
}

Se debe utilizar this en este constructor para evitar la ambig�edad entre el argumento luminosidad y la variable miembro luminosidad (y as� con el resto de los argumentos). Escribir luminosidad = luminosidad; no tendr�a sentido. Los nombres de argumentos tienen mayor precedencia y ocultan a los nombres de las variables miembro con el mismo nombre. Para referirise a la variable miembro se debe hacer explicitamente a trav�s del objeto actual--this.

Tambi�n se puede utilizar this para llamar a uno de los m�todos del objeto actual. Esto s�lo es necesario si existe alguna ambig�edad con el nombre del m�todo y se utiliza para intentar hacer el c�digo m�s claro.

.�super

Si el m�todo oculta una de las variables miembro de la superclase, se puede referir a la variable oculta utilizando super. De igual forma, si el m�todo sobreescribe uno de los m�todos de la superclase, se puede llamar al m�todo sobreescrito a trav�s de super.

Consideremos esta clase.

class MiClase {
    boolean unaVariable;
    void unMetodo() {
        unaVariable = true;
    }
}

y una subclase que oculta unaVariable y sobreescribe unMetodo().

class OtraClase extends MiClase {
    boolean unaVariable;
    void unMetodo() {
        unaVariable = false;
        super.unMetodo();
        System.out.println(unaVariable);
        System.out.println(super.unaVariable);
    }
}

Primero unMetodo() selecciona unaVariable (una declarada en OtraClase que oculta a la declarada en MiClase) a false. Luego unMetodo() llama a su m�todo sobreescrito con esta sentencia.

super.unMetodo();

Esto selecciona la versi�n oculta de unaVariable (la declarada en MiClase) a true.

Luego unMetodo muestra las dos versiones de unaVariable con diferentes valores.

false
true

.�Variables Locales

Dentro del cuerpo de un m�todo se puede declarar m�s variables para usarlas dentro del m�todo. Estas variables son variables locales y viven s�lo mientras el control permanezca dentro del m�todo. Este m�todo declara un variable local i y la utiliza para operar sobre los elementos del array.

Object encontrarObjetoEnArray(Object o, Object[] arrayDeObjetos) {
    int i;      //  variable local
    for (i = 0; i < arrayDeObjetos.length; i++) {
        if (arrayDeObjetos[i] == o)
            return o;
    }
    return null;
}

Despu�s de que este m�todo retorne, i ya no existir� m�s.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP