Sobes.tech
Middle

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

sobes.tech AI

Respuesta de la IA

La herencia es un mecanismo que permite crear una nueva clase (derivada, hija), que hereda los campos y métodos de una clase existente (base, 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 de comportarse de manera uniforme o tener comportamientos diferentes al invocar el mismo método. Se distinguen dos tipos principales: estático (sobrecarga de métodos) y dinámico (sobrescritura de métodos).

En el contexto de tipos de datos de referencia, la herencia permite crear una variable de la clase base que puede referirse a un objeto de la clase derivada. El polimorfismo en este caso se manifiesta en que, al llamar a un método a través de dicha variable, se ejecutará la versión del método del tipo real del objeto, no del tipo de la referencia (polimorfismo dinámico).

Ejemplo en Java:

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

// Clase derivada 1
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Guau-guau");
    }
}

// Clase derivada 2
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Miau-miau");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Variable de tipo Animal que referencia a un objeto Dog
        Animal myCat = new Cat(); // Variable de tipo Animal que referencia a un objeto Cat

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

En este ejemplo, myDog y myCat tienen tipo de referencia Animal, pero gracias al polimorfismo, al llamar a makeSound() se ejecuta la implementación correspondiente de Dog y Cat.