Implementación de Métodos
Similarmente a la implementación de
una clase, la implementación de un método consiste en dos partes, la
declaración y el cuerpo del método.
declaracióndeMétodo
{
cuerpodeMétodo
}
La
Declaración de Método
Una declaración de método proporciona
mucha información sobre el método al compilador, al sistema en tiempo de
ejecución y a otras clases y objetos. Junto con el nombre del método, la
declaración lleva información como el tipo de retorno del método, el número y
el tipo de los argumentos necesarios, y qué otras clases y objetos pueden
llamar al método.
Los únicos elementos necesarios una
declaración de método son el nombre y el tipo de retorno del método. Por
ejemplo, el código siguiente declara un método llamado estaVacio() en la clase
Pila que devuelve un valor booleano (true o false):
class Pila {
. . .
boolean estaVacio() {
. . .
}
}
Devolver un
Valor desde un Método
Java necesita que un método declare el
tipo de dato del valor que devuelve. Si un método no devuelve ningún valor,
debe ser declarado para devolver void
(nulo).
Los métodos pueden devolver tipos de
datos primitivos o tipos de datos de referencia. El método estaVacio() de la
clase Pila devuelve un tipo de dato primitivo, un valor booleano:
class Pila {
static final int PILA_VACIA = -1;
Object[] stackelements;
int topelement = PILA_VACIA;
. . .
boolean estaVacio() {
if (topelement == PILA_VACIA)
return true;
else
return false;
}
}
Sin embargo, el método pop de la clase
PILA devuelve un tipo de dato de referencia: un objeto.
class Pila {
static final int PILA_VACIA = -1;
Object[] stackelements;
int topelement = PILA_VACIA;
. . .
Object pop() {
if (topelement == PILA_VACIA)
return null;
else {
return
stackelements[topelement--];
}
}
}
Los métodos utilizan
el operador return para devolver un valor. Todo método que no sea
declarado como void debe contener una sentencia return.
El tipo de dato del
valor devuelto por la sentencia return debe corresponder con el tipo de
dato que el método tiene que devolver; no se puede devolver un objeto desde un
método que fue declarado para devolver un entero.
Cuando se devuelva un
objeto, el tipo de dato del objeto devuelto debe ser una subclase o la clase
exacta indicada. Cuando se devuelva un tipo interface, el objeto retornado debe
implementar el interface especificado.
Un Nombre de Método
Un nombre de método puede ser cualquier identificador legal en
Java. Existen tres casos especiales a tener en cuenta con los nombres de
métodos:
1. Java soporta la sobrecarga
de métodos, por eso varios métodos pueden compartir el mismo nombre. Por
ejemplo, supón que se ha escrito una clase que puede proporcionar varios tipos
de datos (cadenas, enteros, etc...) en un área de dibujo. Se podría escribir un
método que supiera como tratar a cada tipo de dato. En otros lenguajes, se
tendría que pensar un nombre distinto para cada uno de los métodos. dibujaCadena(),
dibujaEntero, etc... En Java, se puede utilizar el mismo nombre para
todos los métodos pasándole un tipo de parámetro diferente a cada uno de los
métodos. Entonces en la clase de dibujo, se podrán declarar tres métodos
llamados draw<() y que cada uno aceptara un tipo de parámetro
diferente:
class
DibujodeDatos {
void draw(String s) {
. . .
}
void
draw(int i) {
. . .
}
void
draw(float f) {
. . .
}
}
Nota: La información que hay dentro de los
paréntesis de la declaración son los argumentos del método. Los argumentos se
cubren en la siguiente página: Pasar Información a un Método.
Los métodos son diferenciados por el
compilador basándose en el número y tipo de sus argumentos. Así draw(String
s)y draw(int i) son métodos distintos y únicos. No se puede declarar
un método con la misma firma: draw(String s)y draw(String t) son
idénticos y darán un error del compilador.
Habrás observado que los métodos
sobrecargados deben devolver el mismo tipo de dato, por eso void draw(String
s) y int draw(String t) declarados en la misma clase producirán un
error en tiempo de compilación.
2. Todo método cuyo nombre sea igual que
el de su clase es un constructor y tiene una tarea especial que
realizar. Los constructores se utilizan para inicializar un objeto nuevo del
tipo de la clase. Los constructores sólo pueden ser llamados con el operador new.
Para aprender cómo escribir un constructor, puedes ver Escribir
un Método Constructor.
3. Una clase puede sobrescribir un
método de sus superclases. El método que sobrescribe debe tener el mismo,
nombre, tipo de retorno y lista de parámetros que el método al que ha
sobrescrito. Sobrescribir Métodos te enseñará
como sobrescribir los métodos de una superclase.
Características
Avanzadas de la Declaración de Métodos
Junto con los dos elementos
necesarios, una declaración de método puede contener otros elementos. Estos
elementos declaran los argumentos aceptados por el método, si el método es un
método de clase, etc...
Juntándolo todo, una declaración de
método se parecería a esto:
[especificadordeAcceso]
[static] [abstract] [final] [native] [synchronized]
tipodeRetorno
nombredelMétodo ([listadeparámetros]) [throws listadeExcepciones]
Cada uno de estos elementos de una
declaración se cubre en alguna parte de este tutorial.
No hay comentarios:
Publicar un comentario