Ejercicio 33 – Sobrecarga de funciones
Enunciado
Repetir el ejercicio anterior, calculando ahora el máximo de tres números enteros.
Para ello se debe sobrecargar la función maximo, manteniendo ambas versiones en el mismo archivo.
De forma opcional, se puede implementar la versión de 3 números utilizando la versión de 2 números.
📘 ¿qué es la sobrecarga de funciones?
La sobrecarga consiste en definir varios métodos con el mismo nombre pero con diferente número o tipo de parámetros.
Esto permite reutilizar el mismo nombre de función para operaciones similares.
Versión básica — Máximo de 2 y 3 números
public class Ejercicio33 {
// Función maximo (dos números)
public static int maximo(int a, int b) {
int maximo;
if (a > b) {
maximo = a;
} else {
maximo = b;
}
return maximo;
}
// Función maximo sobrecargada (tres números)
public static int maximo(int a, int b, int c) {
if (a >= b && a >= c) {
return a;
} else if (b >= a && b >= c) {
return b;
} else {
return c;
}
}
public static void main(String[] args) {
int num1 = 15;
int num2 = 20;
int num3 = 10;
// Uso de la función de dos parámetros
int resultado = maximo(num1, num2);
System.out.println(resultado);
// Uso de la función sobrecargada
int resultadoSobrecarga = maximo(num1, num2, num3);
System.out.println(resultadoSobrecarga);
System.out.println("\nEl valor máximo de los tres números introducidos es: " + resultadoSobrecarga);
}
}
🟦 ampliación — Usar la función de 2 números dentro de la de 3
Esta versión es más elegante: la función de 3 parámetros reutiliza la de 2 parámetros. Se trata de una técnica muy común para evitar repetir código.
public class Ejercicio33_ampliación {
// Función base (máximo entre dos números)
public static int maximo(int a, int b) {
int maximo;
if (a > b) {
maximo = a;
} else {
maximo = b;
}
return maximo;
}
// Función sobrecargada (máximo de tres números)
public static int maximo(int a, int b, int c) {
int maximo_a_y_b = maximo(a, b);
return maximo(maximo_a_y_b, c);
}
public static void main(String[] args) {
int num1 = 45;
int num2 = 12;
int num3 = 78;
int resultado = maximo(num1, num2, num3);
System.out.println("\nEl valor máximo de los tres números introducidos (" +
num1 + ", " + num2 + ", " + num3 + ") es: " + resultado);
}
}
Salida esperada (ejemplo)
20
20
El valor máximo de los tres números introducidos es: 20
El valor máximo de los tres números introducidos (45, 12, 78) es: 78