Herencia y Polimorfismo en C#
La herencia y el polimorfismo son conceptos fundamentales de la programación orientada a objetos en C#. La herencia permite crear nuevas clases basadas en otras existentes, reutilizando y extendiendo su funcionalidad. El polimorfismo, por su parte, habilita usar una misma interfaz o método con diferentes implementaciones, haciendo tu código más flexible y extensible.
Definir una clase base
Una clase base contiene propiedades y métodos comunes que otras clases pueden heredar.
public class Animal {
public string Nombre { get; set; }
public virtual void HacerSonido() {
Console.WriteLine("El animal hace un sonido.");
}
}
Aquí la clase Animal define un método virtual que puede ser sobrescrito por clases derivadas.
Crear clases derivadas
Las clases derivadas heredan de la clase base y pueden sobrescribir su comportamiento.
public class Perro : Animal {
public override void HacerSonido() {
Console.WriteLine("El perro ladra.");
}
}
La palabra clave override indica que el método reemplaza la implementación de la clase base.
Uso del polimorfismo
Puedes trabajar con referencias de la clase base que apuntan a objetos de clases derivadas.
Animal miAnimal = new Perro();
miAnimal.HacerSonido();
// Salida: El perro ladra.
Esto permite escribir código más flexible y desacoplado, ideal para colecciones de tipos base que contengan objetos heterogéneos.
Buenas Prácticas
Diseña jerarquías de herencia claras y coherentes. Usa la herencia solo cuando tenga sentido semántico. Prefiere la composición sobre la herencia excesiva para mantener el código flexible y mantenible. Documenta las clases y sus métodos sobrescritos para facilitar su comprensión.