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.
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 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.
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.
Resumen
- 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.







