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.