csharp-clases-abstractas

Qué son y cómo usar clases abstractas en C#

Una clase abstracta es una clase que no puede ser instanciada por sí misma y se utiliza principalmente como una base para otras clases.

Contiene uno o más métodos abstractos, que son declaraciones de métodos sin implementación, obligando a las clases derivadas a proporcionar su propia implementación.

Además, pueden contener métodos concretos (métodos con implementación), propiedades y campos

Sintaxis básica de una clase abstracta

La declaración de una clase abstracta se realiza utilizando la palabra clave abstract. Vamos a verlo con un ejemplo,

public abstract class MiClase
{
    public abstract void MiMetodoAbstracto(); // Método abstracto

    public void MiMetodoConcreto() // Método concreto
    {
        Console.WriteLine("Hola desde LuisLlamas.es");
    }
}

Implementación de clases abstractas

Veamos cómo podemos utilizar las clases abstractas en C#. Supongamos que estamos diseñando un sistema para gestionar diferentes tipos de animales.

Creando clases derivadas

Ahora, crearemos algunas clases que heredan de la clase abstracta Animal:

public class Perro : Animal
{
    public override void HacerSonido()
    {
        Console.WriteLine("El perro ladra.");
    }
}

public class Gato : Animal
{
    public override void HacerSonido()
    {
        Console.WriteLine("El gato maúlla.");
    }
}

Aquí, hemos creado dos clases, Perro y Gato, que heredan de Animal y proporcionan su propia implementación del método HacerSonido.

Usando las clases derivadas

Podemos utilizar estas clases derivadas de la siguiente manera:

Animal miPerro = new Perro();
miPerro.HacerSonido(); // Salida: El perro ladra.
miPerro.Dormir();      // Salida: El animal está durmiendo.

Animal miGato = new Gato();
miGato.HacerSonido();  // Salida: El gato maúlla.
miGato.Dormir();       // Salida: El animal está durmiendo.

En este ejemplo, utilizamos referencias de tipo Animal para crear instancias de Perro y Gato. Esto permite que el código sea más flexible y escalable, ya que podemos agregar más tipos de animales en el futuro sin cambiar la lógica existente.