Polimorfismo

En este ejercicio aprenderás el concepto de **polimorfismo** en Java, un principio clave de la **programación orientada a objetos** que permite que un objeto pueda tomar diferentes formas. Mediante ejemplos prácticos, verás cómo una clase base puede definir un comportamiento común, mientras que las clases derivadas pueden sobrescribir esos métodos para proporcionar implementaciones específicas. El polimorfismo facilita la reutilización de código y mejora la flexibilidad de las aplicaciones. A través de este ejercicio, aprenderás a aplicar polimorfismo en tus programas Java para mejorar su estructura y eficiencia.

Tema

Programación Orientada a Objetos (POO)

Ejercicio Java

En este ejercicio, crearás un programa en Java que utilice **polimorfismo** para manejar diferentes tipos de objetos que comparten un comportamiento común pero tienen implementaciones específicas. Primero, definirás una clase base llamada Animal con un método llamado hacerSonido(). Luego, crearás varias clases derivadas como Perro y Gato, que sobrescribirán este método para proporcionar sus propios sonidos. Finalmente, aprenderás cómo utilizar una variable de tipo Animal para almacenar instancias de diferentes clases derivadas y ejecutar los métodos sobrescritos de manera dinámica.

Instrucciones:

  1. Crea una clase base llamada Animal con un método hacerSonido() que imprima un sonido genérico.
  2. Crea al menos dos clases derivadas, como Perro y Gato, que sobrescriban el método hacerSonido() para imprimir sonidos específicos, como "¡Guau!" y "¡Miau!" respectivamente.
  3. En el método principal, crea instancias de Perro y Gato utilizando una variable de tipo Animal y llama al método hacerSonido() en ambos casos.

Este ejercicio te ayudará a entender cómo el **polimorfismo** permite que un mismo método se comporte de manera diferente según el objeto que lo invoque, lo cual es esencial para crear aplicaciones más flexibles y reutilizables en Java.


public class Animal {
    // Método que será sobrescrito
    public void hacerSonido() {
        System.out.println("El animal hace un sonido.");
    }
}

public class Perro extends Animal {
    // Sobrescribir el método hacerSonido
    @Override
    public void hacerSonido() {
        System.out.println("¡Guau!");
    }
}

public class Gato extends Animal {
    // Sobrescribir el método hacerSonido
    @Override
    public void hacerSonido() {
        System.out.println("¡Miau!");
    }
}

public class Main {
    public static void main(String[] args) {
        // Crear objetos de tipo Animal, pero de clases derivadas
        Animal animal1 = new Perro();
        Animal animal2 = new Gato();

        // Llamar al método sobrescrito
        animal1.hacerSonido(); // Debería imprimir "¡Guau!"
        animal2.hacerSonido(); // Debería imprimir "¡Miau!"
    }
}

 Salida:

¡Guau!
¡Miau!

En este programa, se utiliza **polimorfismo** para que una variable de tipo Animal pueda referirse a objetos de diferentes clases derivadas como Perro y Gato, y llamar a los métodos sobrescritos correspondientes. Este enfoque hace que el código sea más flexible y reutilizable en aplicaciones orientadas a objetos.


 Comparte este ejercicio JAVA