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 las clases principales y las clases secundarias. Las clases secundarias heredan métodos y propiedades de la clase principal, 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.
En este tutorial de C#, aprenderá:
- ¿Qué es la herencia en C#?
- Ejemplo de herencia de C#
- ¿Qué es el polimorfismo en C#?
- Ejemplo de polimorfismo en C#
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 de 'protegido' tanto al campo TutorialID como al campo TutorialName.
Recuerde que habíamos mencionado 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 secundaria. 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 con 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 la clase “Guru99Tutorial”, todavía 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 estuvieran protegidos, esta clase puede acceder a ellos.
Paso 3) El último paso es modificar nuestro archivo Program.cs principal. 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 vamos a mostrar 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 a través de la palabra clave 'nuevo'. 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.
- Luego llamamos al método GetTutorial. Tenga en cuenta que aunque este método no está definido en la clase Guru99Tutorial, todavía podemos acceder a este método. El resultado del método GetTutorial luego 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:
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 secundaria.
¿Qué es el polimorfismo en C#?
Polimorfismo en C# es un concepto de programación orientada a objetos donde un nombre puede tener muchas formas. Por ejemplo, tiene un teléfono inteligente para comunicarse. El modo de comunicación que elija podría ser cualquier cosa. Puede ser una llamada, un mensaje de texto, un mensaje de imagen, correo, etc. Entonces, 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 en 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 en el que agregamos un nuevo método con el mismo nombre de SetTutorial. Solo que esta vez solo estamos pasando un parámetro que es el pName. En este método, solo estamos configurando el campo TutorialName en pName.
Paso 2) El último paso es modificar nuestro archivo Program.cs principal. 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, usamos el método SetTutorial con 2 parámetros. Donde estamos pasando tanto TutorialID como TutorialName a este método.
- En el segundo paso, llamamos al método SetTutorial con solo un parámetro. Solo estamos pasando TutorialName a este método.
Si el código anterior se ingresa correctamente y el programa se ejecuta, se mostrará el siguiente resultado. Si en caso de que también desee obtener la ID del tutorial junto con el nombre del tutorial, debe seguir el paso a continuación
- Cree un método separado llamado public int GetTutorialID
- En ese método, escribe la línea de código "return TutorialID". Esto se puede usar para devolver el TutorialID al programa de llamada.
Salida:
A partir de la salida, podemos ver claramente que ambos métodos se llamaron con éxito. Debido a esto, las cadenas "Primer tutorial" y "Segundo tutorial" se enviaron a la consola.
Resumen
- La herencia es cuando una clase secundaria hereda los campos y métodos de la clase principal. La clase secundaria también puede definir sus propios métodos.
- El polimorfismo en C# es un concepto de programación orientada a objetos donde un nombre puede tener muchas formas.
Lenguaje C
- Expresiones, declaraciones y bloques de C# (con ejemplos)
- Clase y objeto de C#
- Clase y método abstractos de C#
- C# Clase parcial y método parcial
- Clase y método sellados de C#
- Funciones de C++ con ejemplos de programas
- Diferencia entre estructura y clase:explicada con el ejemplo de C++
- Diferencia entre while y do-while:explicada con ejemplos
- type() y isinstance() en Python con ejemplos
- C# - Estructura del programa
- C# - Herencia