Introducción a C#
Por Nacho Cabanes, versión 0.93 de 16-abr-2010


(Nota: Estás viendo una versión del curso antigua, creada en 2009. Es recomendable que sigas la versión 2015, mucho más actualizada, con contenidos más detallados, más ejemplos y más ejercicios propuestos)

6.7. Polimorfismo y sobrecarga

El concepto de "polimorfismo" se refiere a que una misma función (un método) puede tener varias formas, ya sea porque reciba distintos tipos de parámetros y/o en distinta cantidad, o porque incluso se aplique a distintos objetos.

Existen dos tipos especialmente importantes de polimorfismo:

6.8. Orden de llamada de los constructores

Cuando creamos objetos de una clase derivada, antes de llamar a su constructor se llama a los constructores de las clases base, empezando por la más general y terminando por la más específica. Por ejemplo, si creamos una clase "GatoSiamés", que deriva de una clase "Gato", que a su vez procede de una clase "Animal", el orden de ejecución de los constructores sería: Animal, Gato, GatoSiames, como se ve en este ejemplo:

/*---------------------------*/
/*  Ejemplo en C# nº 62:     */
/*  ejemplo62.cs             */
/*                           */
/*  Cuarto ejemplo de clases */
/*  Constructores y herencia */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class Animal
{
 
  public Animal() 
  {
    Console.WriteLine("Ha nacido un animal");
  }
}
 
// ------------------
 
public class Perro: Animal
{
 
  public Perro() 
  {
    Console.WriteLine("Ha nacido un perro");
  }
}
 
// ------------------
 
public class Gato: Animal
{
 
  public Gato() 
  {
    Console.WriteLine("Ha nacido un gato");
  }
}
 
 
// ------------------
 
public class GatoSiames: Gato
{
 
  public GatoSiames() 
  {
    Console.WriteLine("Ha nacido un gato siamés");
  }
}  
 
// ------------------
 
public class Ejemplo62
{
 
  public static void Main()
  {
    Animal a1     = new Animal();
    GatoSiames a2 = new GatoSiames();
    Perro a3      = new Perro();
    Gato a4       = new Gato();
  }
 
}
 

El resultado de este programa es:


Ha nacido un animal
Ha nacido un animal
Ha nacido un gato
Ha nacido un gato siamés
Ha nacido un animal
Ha nacido un perro
Ha nacido un animal
Ha nacido un gato

Ejercicio propuesto: