Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código

¿Qué Es una Clase Abstracta en C#?

Una clase abstracta sirve como modelo para otras clases. Nunca puede instanciarse directamente y se marca con la palabra clave abstract. Las clases abstractas típicamente contienen uno o más métodos abstract o virtual que se espera que las subclases implementen o sobrescriban. Proporcionan un contrato común mientras permiten a subclases concretas suministrar comportamiento específico.

Considere el siguiente ejemplo. Primero definimos una clase genérica Animal sin saber si el animal será un perro, gato u otra cosa. El método Description es un placeholder que será especializado por clases derivadas.

Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código

Cuando se conoce el tipo específico de animal, creamos una subclase como Dog que hereda de Animal. La clase Dog no puede alterar el método base Description; en su lugar, proporciona su propia implementación o añade nuevos métodos como DogDescription. Esto demuestra el concepto central de clases abstractas en C#: un contrato base con subclases concretas rellenando los detalles.

Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código

Creando una Clase Abstracta en C#

A continuación una guía paso a paso para definir una clase abstracta y una subclase concreta que la use. Aunque no ejecutaremos este snippet en un editor online, el código demuestra mejores prácticas para diseño de clases abstractas.

Paso 1: Definir la Clase Abstracta

Creamos una clase abstracta llamada Tutorial conteniendo un único método virtual. La palabra clave virtual indica que el método no puede ser sobrescrito por clases derivadas.

Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código

Explicación del Código

  1. Declaramos la clase con la palabra clave abstract para prevenir instanciación directa.
  2. Dentro de la clase, el método Set se define como public virtual void Set() para que las subclases lo hereden sin cambios.

Paso 2: Crear la Clase Derivada

En el mismo archivo, definimos una clase concreta Guru99Tutorial que hereda de Tutorial. La subclase introduce sus propias propiedades y métodos mientras respeta el contrato establecido por la base abstracta.

Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { abstract class Tutorial { public virtual void Set() { // Implementación base (actualmente vacía) } } class Guru99Tutorial : Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public string GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1, ".Net"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } } 

El punto clave es que Guru99Tutorial no puede redeclarar el método Set definido en Tutorial; debe usar la versión heredada tal cual.

Resumen

Las clases abstractas en C# proporcionan una base robusta para construir sistemas extensibles. Al declarar comportamiento común en una clase base no instanciable, los desarrolladores imponen un contrato mientras permiten a clases derivadas suministrar implementaciones concretas. Este patrón promueve reutilización de código, claridad y tipado fuerte en grandes bases de código.

Lenguaje C

  1. Dominando clases y métodos abstractos en C#: Guía práctica
  2. Operadores en C++ explicados: Tipos, ejemplos y programas de muestra
  3. Structs en C++ explicados con un ejemplo práctico
  4. Clases y objetos en C++: Guía práctica con ejemplos de código
  5. Dominar std::list en C++: Sintaxis, Funciones y Ejemplos Prácticos
  6. Struct vs Class en C++: Diferencias Clave, Sintaxis y Mejores Casos de Uso
  7. Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código
  8. Dominando la Abstracción de Datos en C++: Simplifica el Diseño con Separación Interfaz-Implementación
  9. Interfaces en C++: Dominando Clases Abstractas y Funciones Virtuales Puras
  10. Interfaz vs Clase Abstracta en Java: Cómo elegir la abstracción correcta
  11. Abstracción en Java Explicada: Simplifica Código y Mejora Legibilidad