Dominando Herencia y Polimorfismo en C#: Ejemplos de Código Prácticos
¿Qué Es la Herencia en C#?
Herencia es una piedra angular del diseño orientado a objetos en C#. Permite que una clase hija reciba automáticamente los campos y métodos de una clase padre, mientras aún permite a la hija sobrescribir o extender ese comportamiento. Esto promueve reutilización de código, simplifica mantenimiento y establece una jerarquía clara.
- Define clases padre e hija.
- La hija hereda miembros del padre.
- La hija puede modificar comportamiento heredado.
- La hija puede añadir sus propios miembros.
Ejemplo de Herencia en C#
A continuación una demostración paso a paso que muestra cómo implementar herencia y usar miembros protected.
Paso 1 – Modificar la Clase Base
Abra Tutorial.cs y cambie la clase Tutorial para que sus campos clave sean protected:

Usar protected asegura que solo las clases derivadas puedan acceder a estos campos directamente.
Paso 2 – Crear una Clase Derivada
Añada el siguiente código a Tutorial.cs después de la definición de la clase base:

Explicación:
- Declarar
Guru99Tutorialcomo hija deTutorialusando la sintaxis de dos puntos (:). - Añadir un método
RenameTutorialque asigna un nuevo valor aTutorialName. - Porque
TutorialNamees protected,Guru99Tutorialpuede acceder a él aunque no se declare explícitamente allí.
Paso 3 – Usar la Clase Derivada en Program.cs
Reemplace el contenido de Program.cs con lo siguiente:

using System; namespace DemoApplication { public class Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public string GetTutorial() { return TutorialName; } } public class Guru99Tutorial : Tutorial { public void RenameTutorial(string pNewName) { TutorialName = pNewName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.RenameTutorial(".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } } Explicación:
- El programa instancia
Guru99Tutorial, no la baseTutorial. - Llama a
RenameTutorialpara cambiar el título. - Aunque
GetTutorialestá definido en la clase base, la instancia derivada puede invocarlo directamente.
Ejecutar este código imprime:

¿Qué Es el Polimorfismo en C#?
Polimorfismo permite que una única interfaz represente diferentes formas subyacentes. En C#, esto a menudo se manifiesta como sobrecarga o sobrescritura de métodos, permitiendo que el mismo nombre de método realice tareas variadas basadas en parámetros o contexto.
Ejemplo de Polimorfismo en C#
Demostraremos sobrecarga de métodos dentro de la misma clase.
Paso 1 – Actualizar la Clase Base
Modifique Tutorial.cs como se muestra:

Cambios clave:
- El método
SetTutorialahora tiene dos sobrecargas – una que aceptaintystring, y otra que acepta solostring. - Ambas sobrecargas asignan valores a los campos correspondientes.
Paso 2 – Probar en Program.cs
Reemplace Program.cs con el siguiente código:
using System; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public void SetTutorial(string pName) { TutorialName = pName; } public string GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor = new Tutorial(); pTutor.SetTutorial(1, "First Tutorial"); Console.WriteLine(pTutor.GetTutorial()); pTutor.SetTutorial("Second Tutorial"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } } Explicación:
- Primera llamada pasa tanto
idcomonamea la sobrecarga de dos parámetros. - Segunda llamada pasa solo
name, invocando la sobrecarga de un parámetro.
La consola muestra:

Para escenarios avanzados, puede añadir un método GetTutorialID para recuperar el ID por separado.
Resumen
- La herencia permite a una clase hija heredar y extender miembros del padre.
- El polimorfismo, especialmente la sobrecarga de métodos, permite que un único nombre de método se adapte a diferentes conjuntos de parámetros.
- Ambos conceptos son esenciales para código C# limpio, mantenible y reutilizable.
Lenguaje C
- Expresiones, sentencias y bloques en C#: Guía completa con ejemplos prácticos
- Clases y objetos en C#: Fundamentos para POO robusta
- Dominando clases y métodos abstractos en C#: Guía práctica
- Entendiendo clases y métodos parciales en C#
- Dominando clases y métodos sealed en C#: Cuándo usarlos, ejemplos claros y mejora de seguridad y rendimiento
- Funciones en C++ Explicadas con Ejemplos de Código Prácticos
- Struct vs Class en C++: Diferencias Clave, Sintaxis y Mejores Casos de Uso
- Bucles While vs. Do-While: Comparación clara con ejemplos prácticos
- Estructura de Programa C#: Componentes Principales y Ejemplo Hello World
- Herencia en C#: Construyendo código reutilizable y mantenible
- Entendiendo type() e isinstance() en Python: ejemplos prácticos