¿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.