Polimorfismo en c#
En programación orientada a objetos, el polimorfismo es la capacidad de un objeto de tomar muchas formas diferentes. El polimorfismo en C# se logra mediante la herencia y la implementación de interfaces.
En el polimorfismo, un objeto puede ser tratado como su tipo real o como uno de sus tipos de base, lo que le permite a un objeto responder a los mensajes de diferentes maneras. Esto ayuda a hacer que el código sea más flexible, más reutilizable y más fácil de mantener.
Ejemplo:
Supongamos que tienes una clase llamada Animal
, que tiene un método HacerSonido()
. Luego, tienes dos clases derivadas de Animal
: Perro
y Gato
, y cada una de estas clases implementa el método HacerSonido()
de manera diferente.
Por ejemplo, el método HacerSonido()
de la clase Perro
podría imprimir «Guau», mientras que el método HacerSonido()
de la clase Gato
podría imprimir «Miau».
Entonces, si creas una lista de objetos Animal
y agregas un objeto de la clase Perro
y un objeto de la clase Gato
, y luego iteras sobre la lista y llamas al método HacerSonido()
para cada objeto en la lista, el método HacerSonido()
que se ejecuta dependerá del tipo de objeto que se está procesando en ese momento.
En otras palabras, el método HacerSonido()
se está comportando de manera polimórfica, es decir, su comportamiento cambia según el tipo de objeto que se está procesando.
Aquí te dejo un ejemplo de código que implementa esta idea:
using System;
using System.Collections.Generic;
public class Animal
{
public virtual void HacerSonido()
{
Console.WriteLine("Animal genérico haciendo sonido");
}
}
public class Perro : Animal
{
public override void HacerSonido()
{
Console.WriteLine("Guau");
}
}
public class Gato : Animal
{
public override void HacerSonido()
{
Console.WriteLine("Miau");
}
}
class Program
{
static void Main(string[] args)
{
List<Animal> animales = new List<Animal>();
animales.Add(new Perro());
animales.Add(new Gato());
foreach (Animal animal in animales)
{
animal.HacerSonido();
}
}
}
Lenguaje del código: C# (cs)
En este ejemplo, la clase Animal
tiene un método HacerSonido()
que imprime «Animal genérico haciendo sonido». Las clases Perro
y Gato
heredan de Animal
y reemplazan el método HacerSonido()
para imprimir «Guau» y «Miau«, respectivamente.
En el método Main
, se crea una lista de objetos Animal
y se agregan un objeto de la clase Perro
y un objeto de la clase Gato
. Luego, se recorre la lista y se llama al método HacerSonido()
para cada objeto en la lista.
Debido a que los objetos son de diferentes tipos, el método HacerSonido()
que se ejecuta para cada objeto será diferente, lo que demuestra el polimorfismo.