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.