Polimorfismo:
Permite usar un nombre para varios propósitos relacionados, pero ligeramente diferentes. Los
comportamientos pueden ser identificados bajo el mismo nombre pero procesan información de
manera diferente de acuerdo con el objeto que lo contenga.
Hay dos tipos principales de polimorfismo en Java:
Polimorfismo en tiempo de compilación → Sobrecarga de métodos
Se da cuando una clase tiene múltiples métodos con el mismo nombre, pero con diferentes
parámetros. Java decide cuál usar en tiempo de compilación.
class Calculadora {
// Método con un parámetro
int sumar(int a) {
return a + 10;
}
// Método con dos parámetros
int sumar(int a, int b) {
return a + b;
}
// Método con tres parámetros
double sumar(double a, double b, double c) {
return a + b + c;
}
}
public class Polimorfismo {
public static void main(String[] args) {
Calculadora calc = new Calculadora();
[Link]([Link](5)); // Llama al primer método
[Link]([Link](5, 10)); // Llama al segundo método
[Link]([Link](2.5, 3.5, 4.0)); // Llama al tercero
}
}
Polimorfismo en tiempo de ejecución → Sobreescritura de métodos
Se da cuando una subclase redefine un método heredado de la superclase para darle un
comportamiento diferente. Esto se decide en tiempo de ejecución.
// Superclase
class Animal {
void hacerSonido() {
[Link]("El animal hace un sonido");
}
}
// Subclases que redefinen el método
class Perro extends Animal {
@Override
void hacerSonido() {
[Link]("El perro ladra: ¡Guau guau!");
}
}
class Gato extends Animal {
@Override
void hacerSonido() {
[Link]("El gato maúlla: ¡Miau miau!");
}
}
public class Main {
public static void main(String[] args) {
Animal miAnimal = new Perro(); // Se usa una referencia de tipo Animal
[Link](); // Ejecuta el método de Perro
miAnimal = new Gato(); // Se cambia la referencia a un Gato
[Link](); // Ejecuta el método de Gato
}
}
Constructores
Un constructor es un método especial que se ejecuta automáticamente cuando se crea un
objeto de una clase. Su función principal es inicializar los atributos del objeto.
Características del Constructor
Tiene el mismo nombre que la clase.
No tiene un tipo de retorno (ni void, ni int, ni nada).
Se ejecuta automáticamente al crear un objeto con new.
Puede tener parámetros para asignar valores iniciales.
Se pueden tener varios constructores en la misma clase (sobrecarga).