Sobes.tech
Middle

¿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