Documente Academic
Documente Profesional
Documente Cultură
Definición de un método
[modificadores] tipo nombreMétodo ([ Tipo1 Parámetro1, Tipo2
Parámetro2, ...]) //Declaración o cabecera del método
{
Definición de variables locales; //Sólo accesibles desde la función
Sentencias; Cuerpo
del método.
[return [(] expresión [)]]; // Puede no ser la última y puede aparecer más de una vez en la función.
}
Declaración o cabecera:
Modo de acceso: Especifica el tipo de acceso permitido indicando que
usuarios de la clase podrán acceder a ese método, los métodos son la única forma de
acceso a los atributos privados. Por defecto los métodos tienen protección paquete,
es decir son accesibles desde cualquier clase que pertenezca al mismo paquete.
Todas las clases de un mismo fichero .java pertenecen a un mismo paquete.
o public: Accesible desde cualquier otra clase.
o package: Accesible sólo desde el mismo paquete.
o protected: Se comporta como un método público para los métodos del
mismo paquete o de las subclases y para el resto como un método privado.
o private: Sólo accesible a través de métodos de la propia clase.
Tipo del valor de retorno: Un método puede devolver un valor a quien lo
llama o no devolver nada. El valor devuelto por un método puede ser de un tipo
primitivo de datos o una referencia, pero nunca puede devolver más de un
valor. El valor de retorno nunca puede ser un objeto de una superclase, sí
de la misma clase o de una subclase. Si el método no devuelve nada el tipo
devuelto por el método es el tipo void.
Nombre: Por convenio, los nombres de los métodos comienzan con
minúscula. Si el nombre del método es un nombre compuesto cada nueva
palabra empieza con mayúsculas. Los nombres de los métodos suelen ser
verbos.
Ejemplo: calcularPerimetro pintar finalizar
Posible lista de parámetros, la lista de parámetros formales es opcional, la
función podría no tenerlos, en caso de que los haya se trata de variables
locales (sólo accesibles y visibles desde el propio método) separadas por
comas de las que se debe de especificar el tipo y nombre de cada una, se
inicializan en la llamada recibiendo los valores especificados por los
argumentos de la llamada. Aunque la función no lleve parámetros hay que
poner los paréntesis.
Cuerpo del método:
Definición de variables locales. Dentro de los métodos se pueden definir
variables que sólo son accesibles dentro del método en donde se han definido. Este
tipo de variables no se inicializan por defecto, y, aunque no se inicialicen en el
momento de su definición se deben de inicializar antes de utilizarlas pues sino el
compilador detecta un error.
Instrucciones necesarias para realizar determinada tarea.
La instrucción return devuelve el control de la ejecución al método que hizo la
llamada. Si el método no devuelve nada y se elimina la sentenciareturn la función
termina con la llave final o llave de cierre de la función, en este caso el tipo devuelto
por el método es el tipo void. Si el método retorna un valor, la función no puede ser
del tipo void y la sentencia return además de producir la salida de la función
especifica el valor de retorno al método que hizo la llamada. En una función puede
haber más de una sentencia return pero sólo se ejecuta una.
Llamada a un método
Para que un método se ejecute hay que llamarlo. La llamada o invocación a un
método provoca la ejecución de las instrucciones que lo componen, una vez se
han ejecutado el control de la ejecución vuelve a quien hizo la llamada.
La llamada al método consta de:
- Nombre del método.
- Posible lista de argumentos, llamados también parámetros
actuales, entre paréntesis y separados por comas.
nombreObjeto.nombreMétodo([lista de argumentos])
El método se aplica al objeto de la clase a través del operador punto (.)
En este caso el objeto es siempre el argumento implícito del objeto. Los métodos
pueden tener además argumentos explícitos que son los que van entre paréntesis a
continuación del nombre del método.
Cuando se accede al método de un objeto se interpreta que el objeto ha recibido un
mensaje y el objeto responde al mensaje ejecutando el método. Los mensajes que
puede recibir un objeto se corresponden con el nombre de los métodos de su clase.
Si el método devuelve un valor, la llamada a la función debe de formar parte de una
expresión que recoja el valor retornado por la función.
Métodos de clase o métodos static.
Son métodos que no tienen como finalidad actuar sobre los atributos privados de los
objetos. Se trata de un bloque de sentencias que se agrupan bajo un mismo nombre
por tener alguna relación lógica que las encamina a realizar una tarea específica.
Se aplican en general donde se necesiten, al no actuar sobre objetos, no pueden
acceder a un miembro no static, los objetos no son el argumento implícito en la
llamada, (no actúan sobre objetos concretos a través del operador punto (.), pero
pueden recibir objetos de su clase como argumentos explícitos). Un miembro static
si puede ser accedido a través de métodos no static.
IMPORTANTE
- Los métodos static no pueden acceder a variables ni llamar a métodos no
static.
- Los métodos y variables static si pueden ser accedidos o llamados desde
miembros no static.
Los métodos estáticos se crean anteponiendo al nombre del método la palabra static.
Si se define un método como estáticoes posible llamarlo sin crear un objeto. Como
ocurre con los campos, para invocar un método estático hay dos posibilidades:
• Invocarlo directamente a través del nombre de la clase a la que pertenece.
• Invocarlo a través de un objeto de la clase previamente creado.
Pero en la llamada se suele utilizar el nombre de la clase en lugar del nombre de un
objeto de la clase.
Esta es la razón por la que el método main es static, para que pueda ser invocado
aunque no exista un objeto de la clase
Los métodos y variables de clase es lo más parecido que tiene Java a las funciones y
variables globales de C/C++.
El método main
Constructor
Un método constructor de una clase es un método especial que: tiene el mismo
nombre que la clase y no tiene tipo de retorno. La sintaxis para la declaración de un
método constructor es:
A la hora de hablar de operadores vamos a distinguir entre dos tipos, los unarios y los binarios. Los
unarios son aquellos que solo requieren un operando, por ejemplo a++, en este caso el operando es
'a' y el operador '++'. Los operadores binarios son aquellos que necesitan dos operadores, por
ejemplo a+c , ahora el operador es '+' y los operandos 'a' y 'c'. Es importante esta distinción ya que
la programación se hará de forma diferente.
Los operadores que podemos sobrecargar son los unarios, +, -, !, ~, ++, --; y los binarios +, -, *, /,
%, &, |, ^, <<, >>. Es importante decir que los operadores de comparación, ==, !=, <, >, <=, >=, se
pueden sobrecargar pero con la condición que siempre se sobrecargue el complementario, es decir,
si sobrecargamos el == debemos sobrecargar el !=
Operadores Unarios
En esta sección se verá cómo sobrecargar los operadores unarios, es decir aquellos que toman un
solo operando, como por ejemplo a++. El prototipo de los métodos que van a sobrecargar
operadores unarios será:
public static Operando operator++(Operando a)
Como antes sustituyendo el ++ por cualquier operador unario. El ejemplo dentro de nuestra clase
de números complejos sería:
Operadores binarios
Para empezar vamos a sobrecargar el operador suma('+') para que al sumar dos objetos de la clase
ComplexNum, es decir dos números complejos obtengamos un número complejo que será la suma
de ambas partes. Cabe destacar que los prototipos para sobrecargar operadores serán:
public static Operando operator+(Operando a, Operando b)
Este es el prototipo para el operador +, el resto de operadores binarios van a seguir el mismo patrón.
Por tanto el código del método de sobrecarga será el siguiente:
Este método sobrecarga el operador suma para que podamos sumar dos números
complejos. Un dato a tener en cuenta es que los métodos que sobrecargan operadores
deben ser static. Como se ve en el código los operandos son 'a' y 'b', que se reciben como
parámetro y el resultado de la operación es otro número complejo que es el que retorna el
método. Por tanto se limita a crear un nuevo número complejo con ambas partes
operadas. De la misma forma podemos crear la sobrecarga del operador resta('-') para
que lleve a cabo la misma función:
Como vemos el método es idéntico solo que sustituyendo los + por -. En este caso el
trabajo que hacemos dentro del método es trivial pero podría ser tan complejo como se
quisiera.
Herencia.
La herencia en java
Java permite el empleo de la herencia, característica muy potente que permite definir una clase
tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código,
en lugar de copiar y pegar.
En java, como ya vimos la herencia se especifica agregando la claúsula extends después del nombre
de la clase. En la claúsula extends indicaremos el nombre de la clase base de la cuál queremos
heredar.
Al heredar de una clase base, heredaremos tanto los atributos como los métodos, mientras que los
constructores son utilizados, pero no heredados.
Ejemplo :
Clase Base
package ejemploherencia;
Clase auto
package ejemploherencia;
}
else
System.out.print("no es deportivo");