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.