¿Qué mecanismos de implementación de polimorfismo existen en Java?
sobes.tech AI
Respuesta de la IA
-
Polimorfismo en tiempo de compilación (polimorfismo estático): Se implementa mediante la sobrecarga de métodos (method overloading). Los métodos tienen el mismo nombre, pero diferentes firmas (cantidad, tipo o orden de los argumentos).
class Calculator { // Sobrecarga del método add public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Polimorfismo en tiempo de ejecución (polimorfismo dinámico): Se implementa mediante la sobrescritura de métodos (method overriding). El método en la clase hija tiene la misma firma que el método en la clase padre y proporciona su propia implementación. La decisión de qué método llamar se toma en tiempo de ejecución según el tipo real del objeto.
class Animal { public void sound() { System.out.println("Animal hace un sonido"); } } class Dog extends Animal { // Sobrescritura del método sound @Override public void sound() { System.out.println("Perro ladra"); } } class Cat extends Animal { // Sobrescritura del método sound @Override public void sound() { System.out.println("Gato maúlla"); } } -
Referencias a superclases / interfaces: Los objetos de subclases pueden ser asignados a referencias de superclases o interfaces que implementan. Esto permite tratar objetos de diferentes tipos de manera uniforme a través de una referencia común. La llamada a un método sobrescrito a través de dicha referencia resulta en la ejecución de la versión del método del tipo real del objeto.
Animal myAnimal = new Dog(); // Asignación de un objeto Dog a una referencia de tipo Animal myAnimal.sound(); // Se llama al método sobrescrito sound() de la clase Dog