Methods in Java: parameters, return, overloading and recursion

Learn to organise your code into reusable functions. With call simulators, overloading, varargs and recursion.

Un método es un bloque de código con nombre que hace una tarea concreta. Escribes la lógica una vez y la llamas tantas veces como quieras. Es la base para no repetirte y para que el código se lea.

public static int suma(int a, int b) {
//     │       │    │    └── parámetros (entradas)
//     │       │    └── nombre
//     │       └── tipo que devuelve (int)
//     └── modificadores
    return a + b;   // valor de salida
}

Parameters and return value

Los parámetros entran; el return saca un resultado. Un método void no devuelve nada (solo «hace algo», como imprimir).

Method overloading

Puedes tener varios métodos con el mismo nombre si se diferencian en el número o tipo de parámetros. Java elige la versión correcta según cómo lo llames.

int area(int lado)              { return lado * lado; }          // cuadrado
int area(int base, int altura)  { return base * altura; }        // rectángulo
double area(double radio)       { return Math.PI * radio * radio; } // círculo

Varargs: variable number of arguments

Con tipo... nombre el método acepta 0, 1 o muchos valores. Dentro se maneja como un array.

int sumar(int... numeros) {
    int total = 0;
    for (int n : numeros) total += n;
    return total;
}
sumar(1, 2, 3);        // 6
sumar(10, 20, 30, 40); // 100

Recursion

Un método recursivo se llama a sí mismo con un problema más pequeño, hasta llegar a un caso base que ya sabe resolver. El ejemplo clásico: el factorial.

int factorial(int n) {
    if (n <= 1) return 1;          // caso base
    return n * factorial(n - 1);   // caso recursivo
}

Variable scope

Una variable declarada dentro de un método (o de un bloque { }) solo existe ahí. Fuera, no.

Check what you've learned