Métodos de objeto
Los métodos son funciones definidas dentro de una clase. Salvo los métodos static o de clase, se
aplican siempre a un objeto de la clase por medio del operador punto (.). Dicho objeto es su
argumento implícito. Los métodos pueden además tener otros argumentos explícitos que van entre
paréntesis, a continuación del nombre del método.
La primera línea de la definición de un método se llama declaración o header: el código
comprendido entre las llaves {...} es el cuerpo o body del método. Considérese el siguiente método
tomado de la clase Circulo:
public Circulo elMayor(Circulo c) {
// header y comienzo del método
if (this.r>=c.r) // body
return this; // body
else // body
return c; // body
} // final del método
El header consta del cualificador de acceso {public. en este caso), del tipo del valor de retomo
{Circulo en este ejemplo, void si no tiene), del nombre de la función y de una lista de argumentos
explícitos entre paréntesis, separados por comas. Si no hay argumentos explícitos se dejan los
paréntesis vacíos.
Los métodos tienen visibilidad directa de las variables miembro del objeto que es su
argumento implícito. es decir, pueden acceder a ellas sin cualificarlas con un nombre de objeto y el
operador punto (.). De todas formas, también se puede acceder a ellas mediante la referencia this, de
modo discrecional (como en el ejemplo anterior con this.r) o si alguna variable local o argumento
las oculta.
El valor de retorno puede ser mi valor de un tipo primitivo o una referencia. En cualquier
caso no puede haber más que un único valor de retomo (que puede ser un objeto o un array). Se
puede devolver también una referencia a un objeto por medio de un nombre de interface. El objeto
devuelto debe pertenecer a una clase que implemente esa interface.
Se puede devolver como valor de retomo un objeto de la misma clase que el método o de una
sub-clase. pero nunca de una super-clase.
Los métodos pueden definir variables locales. Su visibilidad llega desde la definición al final
del bloque en el que han sido definidas. No hace falta inicializar las variables locales en el punto en
que se definen, pero el compilador no permite utilizarlas sin haberles dado un valor.
A diferencia de
las variables miembro, las variables locales no se inicializan por defecto.
Si en el header del método se incluye la palabra native (Ej: public native void miMetodo ();)
no hay que incluir el código o implementación del método. Este código deberá estar en una librería
dinámica (Dynamic Link Library o DLL). Estas librerías son ficheros de funciones compiladas
normalmente en lenguajes distintos de Java (C. C++. Fortran, etc.). Es la forma de poder utilizar
conjuntamente funciones realizadas en otros lenguajes desde código escrito en Java. Este tema
queda fuera del caracter fundamentalmente introductorio de este manual.
Un método también puede declararse como synchronized (Ej: public synchronized double
miMetodoSynch () {...}). Estos métodos tienen la particularidad de que sobre un objeto no pueden
ejecutarse simultáneamente dos métodos que estén sincronizados
No hay comentarios:
Publicar un comentario