Sobes.tech
Junior

¿Qué son la herencia y el polimorfismo en los tipos de datos referenciales?

sobes.tech AI

Respuesta de la IA

La herencia es un mecanismo que permite a una clase (clase hija, clase derivada) heredar propiedades y comportamientos de otra clase (clase base, clase padre). Esto favorece la reutilización del código y la creación de jerarquías de clases.

El polimorfismo es la capacidad de objetos de diferentes clases para responder de manera diferente a un mismo mensaje (llamada a método), dependiendo de su tipo concreto. En el contexto de la herencia, esto a menudo se manifiesta mediante la sobrescritura de métodos de la clase base en la clase derivada.

Ejemplo (Java):

// Clase base
class Animal {
    public void makeSound() {
        System.out.println("El animal hace un sonido");
    }
}

// Clase derivada
class Dog extends Animal {
    @Override // Sobrescritura del método
    public void makeSound() {
        System.out.println("¡Guau!");
    }
}

// Clase derivada
class Cat extends Animal {
    @Override // Sobrescritura del método
    public void makeSound() {
        System.out.println("¡Miau!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Objeto Dog, pero referencia de tipo Animal
        Animal myCat = new Cat(); // Objeto Cat, pero referencia de tipo Animal

        myDog.makeSound(); // Se llama al método de Dog
        myCat.makeSound(); // Se llama al método de Cat
    }
}

En este ejemplo:

  • Herencia: Las clases Dog y Cat heredan de Animal.
  • Polimorfismo: Las variables myDog y myCat hacen referencia a objetos Dog y Cat respectivamente, aunque tienen tipo Animal. Al llamar a makeSound(), se ejecuta el método del objeto, no el tipo de la referencia.