Junior
¿Qué se puede cambiar al sobrecargar métodos en programación?
sobes.tech AI
Respuesta de la IA
Al sobrecargar métodos (method overloading) se puede cambiar:
- Cantidad de parámetros: Los métodos con el mismo nombre pueden tener diferentes cantidades de parámetros formales.
- Tipos de parámetros: Los métodos con el mismo nombre y la misma cantidad de parámetros pueden diferir en los tipos de estos parámetros.
- Orden de los tipos de parámetros: Si los métodos tienen la misma cantidad de parámetros y los mismos tipos, pero en diferente orden, también se considera sobrecarga.
Ejemplo en Java:
// Clase con métodos sobrecargados
class Calculator {
// Método de suma de dos números enteros
public int add(int a, int b) {
return a + b;
}
// Método sobrecargado: suma de tres números enteros
public int add(int a, int b, int c) {
return a + b + c;
}
// Método sobrecargado: suma de dos números con punto flotante
public double add(double a, double b) {
return a + b;
}
// Método sobrecargado: suma de un entero y un número con punto flotante
public double add(int a, double b) {
return a + b;
}
// Método sobrecargado: suma de un número con punto flotante y un entero
public double add(double a, int b) {
return a + b;
}
}
Lo que no se puede cambiar al sobrecargar métodos:
- Tipo de valor de retorno: Dos métodos con el mismo nombre y la misma firma (cantidad, tipos y orden de parámetros) no pueden diferir solo en el tipo de valor de retorno.
- Modificadores de acceso: Los modificadores de acceso (public, private, protected, default) no afectan la sobrecarga.
- Presencia o ausencia de la palabra clave
static: No se puede sobrecargar un método estático definiendo un método no estático con la misma firma, o viceversa. - Lista de excepciones lanzadas por el método: La lista de excepciones no forma parte de la firma del método, por lo que el compilador no la usa para distinguir métodos sobrecargados.
Comparación entre sobrecarga y sobrescritura de métodos:
| Característica | Sobrecarga (Overloading) | Sobrescritura (Overriding) |
|---|---|---|
| Dónde ocurre | En una misma clase o en una jerarquía de clases | En una clase hija |
| Nombre del método | Igual | Igual |
| Firma del método | Diferente (cantidad, tipos, orden de parámetros) | Igual |
| Tipo de retorno | Puede ser diferente (pero no la única diferencia) | Debe ser igual o covariante (para objetos) |
| Propósito | Ofrecer varias opciones para una misma acción con diferentes tipos de datos o cantidad de argumentos | Cambiar el comportamiento de un método heredado en la clase hija |
| Relación entre métodos | Métodos independientes | Relación de "es un" (herencia) |
| Polimorfismo | Polimorfismo en tiempo de compilación (estático) | Polimorfismo en tiempo de ejecución (dinámico) |