Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


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_06_08a.cs
// Orden de llamada a los constructores
// Introducción a C#, por Nacho Cabanes

using System;


public class Ejemplo_06_08a
{
    public static void Main()
    {
        Animal a1     = new Animal();
        Console.WriteLine();
        
        GatoSiames a2 = new GatoSiames();
        Console.WriteLine();
        
        Perro a3      = new Perro();
        Console.WriteLine();
        
        Gato a4       = new Gato();
        Console.WriteLine();
    }  
}

// ------------------


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");
    }
}  

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

Ejercicios propuestos:

Ejercicio propuesto 6.8.1: Crea un único fuente que contenga las siguientes clases:
  • Una clase Trabajador, cuyo constructor escriba en pantalla "Soy un trabajador".
  • Una clase Programador, que derive de Trabajador, cuyo constructor escriba en pantalla "Soy programador".
  • Una clase Analista, que derive de Trabajador, cuyo constructor escriba en pantalla "Soy analista".
  • Una clase Ingeniero, que derive de Trabajador, cuyo constructor escriba en pantalla "Soy ingeniero".
  • Una clase IngenieroInformatico, que derive de Ingeniero, cuyo constructor escriba en pantalla "Soy ingeniero informático".
  • Una clase "PruebaDeTrabajadores", que cree un objeto perteneciente a cada una de esas clases.
Ejercicio propuesto 6.8.2: Crea una variante del proyecto Libro (ejercicio 6.7.2) en la que el constructor de Documento escriba en pantalla "Creando documento" y el constructor de Libro escriba en pantalla "Creando libro". Comprueba su funcionamiento.
Ejercicio propuesto 6.8.3: Crea una versión alternativa del esqueleto del ConsoleInvaders (6.7.3) en la que el constructor de Sprite escriba en pantalla "Creando sprite" y los constructores de Nave escriba en pantalla "Creando nave en posición prefijada" o "Creando nave en posición indicada por el usuario", según el caso. Comprueba su funcionamiento.
Ejercicio propuesto 6.8.4: Crea una versión alternativa de las clases Vehiculo, Coche, Moto (6.7.4), que te avise del momento en que se entra a cada constructor. Crea un programa de prueba que defina un coche y una moto, y comprueba su funcionamiento.