Última actualización: julio 24
En este post voy a explicar como trabajar con los métodos en Java. Todos los lenguajes de programación tienen métodos, aunque pueden referirse a ellos como funciones o procedimientos.
Un método es una colección de sentencias que realizan una tarea específica. Puede retornar un valor que podemos utilizar en nuestro programa o no retornar ninguno, esto es opcional. Empleando métodos ahorramos tiempo al no tener que reescribir un conjunto de sentencias varias veces. Sencillamente, cuando tengamos que ejecutar la tarea que realiza el método, llamaremos al mismo sin tener que teclear de nuevo todas las sentencias de la tarea.
Declaración
En la siguiente figura, se puede observar la sintaxis de declaración de un método:

- Modificador: Palabra reservada empleada para indicar el alcance del método (private o public). Hay otro modificador posible que es la palabra reservada static, que se emplea para indicar que el método puede ser invocado sin necesidad de crear un objeto de la clase. En realidad, hasta ahora hemos estado utilizando el método main que es de este tipo, ya que al ser el primero en ejecutarse necesitamos poder ejecutarlo sin crear ningún objeto antes.
- Tipo de retorno: Como indique anteriormente, un método puede retornar un valor. En la declaración del método, hay que indicar el tipo del valor que devuelve. Si el método no devolviera ningún valor, utilizaríamos la palabra reservada void.
- Nombre del método: Para poder referirnos al método en nuestros programas, tenemos que ponerle un nombre. Usualmente será una palabra o varias juntas, que tenderán a ser lo más descriptivas posible de la acción que realiza el método.
La práctica habitual es empezar el nombre en minúsculas y en el caso de que concatenemos varias palabras, poner en mayúsculas la primera letra de dichas palabras. Por ejemplo: encontrarMáximo, calcularResultado….
- Lista de parámetros: Lista de parámetros que serán usados por el método. Tenemos que poner un nombre a cada uno de ellos y declarar su tipo.
Los tipos de los parámetros pueden ser de cualquier tipo: primitivos o definidos por el usuario. Los tipos primitivos se pasan por valor, es decir, se pasa el valor del parámetro o variable, con lo que el método no modifica el valor de esta sino que sencillamente emplea el valor de la misma.
- Cuerpo del método: Donde incluimos todas las instrucciones que va a ejecutar el método.
Llamada a un método
Para ejecutar un método, los llamamos por su nombre desde la parte del código en la que queramos que se ejecute. En la llamada, le vamos a pasar los parámetros que requiere y podremos guardar el valor que devuelva en una variable del tipo adecuado.
Para entender como funcionan los métodos, vamos a realizar la siguiente actividad.
Actividad 1: Practicando con métodos
- Abre un proyecto java con el IDE que estés empleando
- Introduce el siguiente código:
public class PracticandoMetodos {
public static void main(String args[]) {
double nota;
nota = calcularNota(4.5,7.7,true);
System.out.println("Nota = " + nota);
}
private static double calcularNota (double notaExamen, double notaTrabajoGrupo, boolean ratioAsistencia){
double notaFinal = notaExamen*0.6+notaTrabajoGrupo*0.4;
if (notaFinal>=5.0 && ratioAsistencia){
return notaFinal;
}
return 0.0;
}
}
Línea 4: Llamada al método calcularNota. Este método devuelve un valor de tipo double que guardamos en la variable nota. Pasamos los parámetros al método introduciendo directamente unos valores, aunque podríamos haber usado variables.
Línea 7: Declaramos el método. Es privado, lo que significa que no puede ser llamado fuera de la clase en la que está. La Clase la hemos llamado PracticandoMetodos.
Tenemos que añadir la palabra reservada static porque vamos a llamarlo desde un método static (el método main).
El valor que devuelve el método es del tipo double y el método tiene tres parámetros.
Línea 9: Calculamos la nota final considerando el porcentaje de contribución de cada nota. El resultado lo guardamos en la variable notaFinal.
Línea 11: Si la expresión de la sentencia if es evaluada como verdadera, se ejecutará esta línea y la sentencia return devolverá el valor de notaFinal y saldrá del método.
Línea 13: Si la expresión de la sentencia if es evaluada como falsa, se ejecutará esta línea y el método devolverá el valor 0.0
- Ahora vamos a utilizar la Clase Scanner para pedirle al usuario que introduzca los datos que pasaremos al método:
import java.util.Scanner;
public class PracticandoMetodos {
public static void main(String args[]) {
double nota;
//introducción de datos
Scanner sc1=new Scanner(System.in);
System.out.println("Introduce la nota del examen: ");
double examen = sc1.nextDouble();
Scanner sc2=new Scanner(System.in);
System.out.println("Introduce la nota del trabajo de grupo: ");
double trabajo = sc2.nextDouble();
Scanner sc3=new Scanner(System.in);
System.out.println("Tiene el grado de asistencia requerido para aprobar la asignatura? (true/false): ");
boolean ratio = sc3.nextBoolean();
//calculo e impresión de la nota
nota = calcularNota(examen,trabajo,ratio);
System.out.println("Nota = " + nota);
sc1.close(); sc2.close(); sc3.close();
}
private static double calcularNota (double notaExamen, double notaTrabajoGrupo, boolean ratioAsistencia){
double notaFinal = notaExamen*0.6+notaTrabajoGrupo*0.4;
if (notaFinal>=5.0 && ratioAsistencia){
return notaFinal;
}
return 0.0;
}
}
Sobrecarga de métodos
Es una característica que permite que una clase tenga varios métodos con el mismo nombre, siempre que la lista de sus argumentos sea diferente.
Veamos como funciona esto en un ejemplo.
Actividad 2: Sobrecarga de métodos
- Abre un proyecto Java con el IDE que estés usando
- Introduce el siguiente código:
public class SobrecargaMetodos {
public static void main(String args[]) {
int x=10; int y=25; int z=5;
int area = multiplicar (x,y);
int volumen = multiplicar (x,y,z);
System.out.println("AREA = " + area);
System.out.println("VOLUMEN = " + volumen);
}
private static int multiplicar (int num1,int num2){
return num1*num2;
}
private static int multiplicar (int num1,int num2, int num3){
return num1*num2*num3;
}
}
Línea 4: Declaración y asignación de tres variables que usaremos para pasar sus valores a nuestros métodos.
Línea 6: Declaración de la variable área de tipo integer y llamada al método multiplicar empleando dos parámetros. La variable área será inicializada con el valor que devuelva el método.
Línea 7: Declaración de la variable volumen de tipo integer y llamada al método multiplicar empleando tres parámetros. La variable volumen será inicializada con el valor que devuelva el método.
Línea 12 a 14: método multiplicar con dos parámetros.
Línea 15 a 17: método multiplicar con tres parámetros (Sobrecarga de métodos)
Y si ejecutamos el programa, obtendremos el resultado:
AREA = 250
VOLUME = 1250
Recursividad
Un método puede llamarse a sí mismo dentro del bloque de instrucciones del propio método. Esta propiedad es conocida como la recursividad.
Este tipo de programación se aplica cuando la solución puede plantearse como un proceso iterativo en el que se va reduciendo el problema hasta llegar a su solución final. El ejemplo clásico de este tipo de procesos es el cálculo del factorial de un número. El factorial de un número n puede expresarse como el producto de dicho número por el factorial de n-1. El factorial de n-1 puede expresarse como el producto de n-1 por el factorial de n-2, y así sucesivamente hasta llegar al factorial de 1.
Es imperativo que el método alcance a una condición de terminación y no permanezca ejecutándose indefinidamente.
En la actividad siguiente puede verse un programa que implementa el ejemplo del cálculo del factorial con un método recursivo, que se llama a sí mismo.
Actividad 3: Recursividad
- En el IDE con el que estes trabajando, abre un proyecto java.
- Introduce el siguiente código:
import java.util.Scanner;
public class FactorialFor {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Introduce un número para calcular su factorial");
int numero=sc.nextInt();
System.out.println("El factorial de "+numero+ " es "+factorial(numero));
}
private static long factorial(int n){
long res=1;
if(n>1){
res= n*factorial(n-1);
}
return res;
}
}
El método factorial se llama a sí mismo en la instrucción:
res= n*factorial(n-1);
Y lo hace de forma recursiva mientras n sea mayor que 1. La variable entera n se va reduciendo en 1 en cada llamada al método factorial, y de esta forma nos aseguramos que se alcanza la condición de terminación.
NOTA:
Este post es parte de la colección “Java”. Puedes ver el índice de esta colección aquí.