Herencia y polimorfismo de C# con ejemplos de programas
⚡ Resumen inteligente
La herencia y el polimorfismo en C# son dos principios fundamentales de la programación orientada a objetos. La herencia permite que una clase hija reutilice los campos y métodos de una clase padre, mientras que el polimorfismo permite que un mismo nombre de método adopte múltiples formas.
¿Qué es la herencia en C#?
Herencia es un concepto importante de C#. La herencia es un concepto en el que se definen clases principales y clases secundarias. Las clases hijas heredan métodos y propiedades de la clase padre, pero al mismo tiempo también pueden modificar el comportamiento de los métodos si es necesario. La clase secundaria también puede definir sus propios métodos si es necesario.
Comprendamos mejor la herencia de C# mediante un ejemplo de programa:
Ejemplo de herencia de C#
Veamos ahora cómo podemos incorporar el concepto de herencia en nuestro código.
Paso 1) El primer paso es cambiar el código de nuestra clase Tutorial. En este paso, agregamos el siguiente código al archivo Tutorial.cs.
Tenga en cuenta que ahora debemos agregar el modificador de acceso "protegido" tanto al campo TutorialID como al campo TutorialName.
Recuerda que habíamos mencionado este modificador de acceso en el Tutorial sobre modificadores de accesoAquí se puede apreciar el propósito de esto. Solo cuando se cuenta con este modificador de acceso (protegido), la clase hija podrá utilizar los campos de la clase padre.
Paso 2) El segundo paso es agregar nuestra nueva clase infantil. El nombre de esta clase será “Guru99Tutorial”. En este paso, agregamos el siguiente código al archivo Tutorial.cs. El código debe colocarse después de la definición de la clase Tutorial.
Code Explicación:-
- El primer paso es crear el GuruClase hija 99Tutorial. También debemos mencionar que esta clase será una clase hija de la clase Tutorial. Esto se indica mediante la palabra clave ':'.
- A continuación, estamos definiendo un método llamado RenameTutorial. Se utilizará para cambiar el nombre del campo TutorialName. Este método acepta una variable de cadena que contiene el nuevo nombre del Tutorial.
- Luego asignamos el parámetro pNewName al campo TutorialName. Nota: : – Aunque no hemos definido el campo TutorialName en el “GuruEn la clase “99Tutorial”, aún podemos acceder a este campo. Esto se debe a que “Guru"99Tutorial" es una subclase de la clase Tutorial. Y como hemos declarado los campos de la clase Tutorial como protegidos, esta clase puede acceder a ellos.
Paso 3) El último paso es modificar nuestro archivo principal Program.cs. En nuestra aplicación de consola, vamos a crear un objeto de la GuruClase 99Tutorial. Con este objeto, llamaremos al método RenameTutorial. Luego, mostraremos el campo TutorialName con la ayuda del método GetTutorial.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; 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(); } } }
Code Explicación:-
- El primer paso es crear un objeto para el GuruClase Tutorial 99. Esto se hace mediante la palabra clave 'new'. Tenga en cuenta que esta vez no estamos creando un objeto de la clase Tutorial.
- Utilizamos el método RenameTutorial del GuruClase 99Tutorial para cambiar el campo TutorialName. Pasamos la cadena “.Net por Guru99” al método RenameTutorial.
- Luego llamamos al método GetTutorial. Tenga en cuenta que, aunque este método no está definido en el GuruEn la clase 99Tutorial, aún podemos acceder a este método. El resultado del método GetTutorial se muestra en la consola mediante el método Console.WriteLine.
Si el código anterior se ingresa correctamente y el programa se ejecuta con éxito, se mostrará el siguiente resultado.
Salida:
A partir de la salida, podemos ver claramente que el campo TutorialName fue renombrado a “.Net por Guru99”. Esto fue posible gracias al método RenameTutorial llamado por la clase hija.
¿Qué es el polimorfismo en C#?
Polimorfismo in C# Es un concepto de la programación orientada a objetos (POO) donde un mismo nombre puede tener múltiples formas. Por ejemplo, tienes un teléfono inteligente para comunicarte. El modo de comunicación que elijas puede ser cualquiera: una llamada, un mensaje de texto, un mensaje con imágenes, correo electrónico, etc. El objetivo es común, es decir, la comunicación, pero el método de comunicación es diferente. Esto se conoce como polimorfismo.
Obtendrá una mejor comprensión del polimorfismo de C# con el siguiente ejemplo de programa:
Ejemplo de polimorfismo de C#
Veamos ahora cómo podemos incorporar el concepto de polimorfismo en nuestro código.
Paso 1) El primer paso es cambiar el código de nuestra clase Tutorial. En este paso, agregamos el siguiente código al archivo Tutorial.cs.
Code Explicación:-
1 y 2) El primer paso es el mismo que en nuestros ejemplos anteriores. Estamos enping la definición del método SetTutorial tal como es.
3) Este método establece TutorialID y TutorialName en función de los parámetros pID y pName.
4) Aquí es donde hacemos un cambio en nuestra clase donde agregamos un nuevo método con el mismo nombre de SetTutorial. Solo que esta vez solo pasamos un parámetro que es pName. En este método, simplemente configuramos el campo de TutorialName en pName.
Paso 2) El último paso es modificar nuestro archivo principal Program.cs. En nuestra aplicación de consola, vamos a crear un objeto de la Guru99Clase tutorial.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; 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(); } } }
Code Explicación:-
- En el primer paso, utilizamos el método SetTutorial con 2 parámetros. Donde pasamos tanto TutorialID como TutorialName a este método.
- En el segundo paso, ahora llamamos al método SetTutorial con un solo parámetro. Simplemente estamos pasando el TutorialName a este método.
Si el código anterior se ingresa correctamente y se ejecuta el programa, se mostrará el siguiente resultado. Si desea obtener también el ID del tutorial junto con el nombre del tutorial, debe seguir los pasos a continuación.
- Cree un método separado llamado public int GetTutorialID
- En ese método, escriba la línea de código "return TutorialID". Esto se puede utilizar para devolver el TutorialID al programa que realiza la llamada.
Salida:
En el resultado, podemos ver claramente que ambos métodos se llamaron correctamente. Debido a esto, las cadenas "Primer tutorial" y "Segundo tutorial" se enviaron a la consola.








