Junior
¿Has utilizado clases abstractas en tus proyectos?
sobes.tech AI
Respuesta de la IA
Sí, lo he utilizado. Las clases abstractas se empleaban para crear estructuras básicas con métodos y propiedades comunes, que luego son heredadas por clases específicas.
// Declaración de una clase abstracta
public abstract class Shape
{
// Método abstracto que debe ser implementado en las clases derivadas
public abstract double GetArea();
// Método virtual con implementación por defecto, que puede ser sobreescrito
public virtual void Draw()
{
Console.WriteLine("Dibujando una forma.");
}
}
// Clase concreta que hereda de Shape
public class Circle : Shape
{
public double Radius { get; set; }
public Circle(double radius)
{
Radius = radius;
}
// Implementación del método abstracto
public override double GetArea()
{
return Math.PI * Radius * Radius;
}
// Sobrescribir el método virtual
public override void Draw()
{
Console.WriteLine($"Dibujando un círculo con radio {Radius}.");
}
}
Principales escenarios de uso:
- Definición de un contrato general: Las clases abstractas permiten definir un conjunto de métodos y propiedades que deben estar presentes en todas las clases derivadas.
- Implementación parcial: Posibilidad de proporcionar una implementación parcial de la funcionalidad en la clase base, evitando duplicación completa del código en las clases hijas.
- Patrón de diseño: Frecuentemente se usan en la implementación de patrones, como el "Patrón de método".
Diferencias con las interfaces:
| Característica | Clase abstracta | Interfaz |
|---|---|---|
| Herencia | Herencia múltiple no permitida | Implementación múltiple permitida |
| Implementación | Puede contener implementación de métodos | Hasta C# 8.0 - solo declaraciones, después - implementación por defecto |
| Miembros | Puede tener campos, constructores, métodos virtuales/abstractos/ordinarios | Hasta C# 8.0 - solo métodos y propiedades, después - también miembros estáticos y implementaciones por defecto |
| Estado | Puede tener estado (a través de campos) | No puede tener estado |