Herencia y polimorfismo de C# con ejemplos de programas
¿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.
Recuerde que mencionamos este modificador de acceso en el tutorial Modificador de acceso. Bueno aquí puedes ver el propósito de tener esto. Solo cuando tenga este modificador de acceso (protegido), la clase secundaria podrá usar los campos de la clase principal.
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.
Explicación del código: -
- El primer paso es crear la clase secundaria Guru99Tutorial. También debemos mencionar que esta clase será una clase secundaria de la clase Tutorial. Esto se hace 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 hayamos definido el campo TutorialName en la clase “Guru99Tutorial”, aún podemos acceder a este campo. Esto se debe al hecho de que “Guru99Tutorial” es una clase secundaria de la clase Tutorial. Y debido a que hicimos que los campos de la clase Tutorial estén 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 clase Guru99Tutorial. Con este objeto vamos a llamar 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(); } } }
Explicación del código: -
- El primer paso es crear un objeto para la clase Guru99Tutorial. Esto se hace mediante la palabra clave "nueva". Tenga en cuenta que esta vez no estamos creando un objeto de la clase Tutorial.
- Usamos el método RenameTutorial de la clase Guru99Tutorial para cambiar el campo TutorialName. Pasamos la cadena “.Net by Guru99” al método RenameTutorial.
- A continuación, llamamos al método GetTutorial. Tenga en cuenta que, aunque este método no esté definido en la clase Guru99Tutorial, aún podemos acceder a él. La salida del método GetTutorial se muestra en la consola a través del 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:
En el resultado, podemos ver claramente que el campo TutorialName pasó a llamarse ".Net by Guru99". Esto fue posible gracias al método RenameTutorial llamado por la clase secundaria.
¿Qué es el polimorfismo en C#?
Polimorfismo En C#, es un concepto de programación orientada a objetos en el que un nombre puede tener muchas formas. Por ejemplo, tienes un teléfono inteligente para comunicarte. El modo de comunicación que elijas puede ser cualquier cosa: una llamada, un mensaje de texto, un mensaje con imagen, un correo, etc. Por lo tanto, el objetivo es común, es decir, la comunicación, pero su enfoque es diferente. Esto se llama 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.
Explicación del código: -
1 y 2) El primer paso es el mismo que en nuestros ejemplos anteriores. Mantenemos la definición del método SetTutorial tal como está.
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 clase Guru99Tutorial.
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(); } } }
Explicación del código: -
- 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.
Resum
- La herencia es donde una clase secundaria hereda los campos y métodos de la clase principal. La clase hija también puede definir sus propios métodos.
- Polimorfismo en C# es un concepto de programación orientada a objetos en el que un nombre puede tener muchas formas.