Webmaster Workers utiliza cookies. Lea nuestra Política de Privacidad para obtener más información. Para eliminar este mensaje, haga clic en el siguiente botón: Acepto el uso de cookies


Orden de ejecución de los constructores con herencia





Cuando tenemos constructores en las clases y subclases el orden de ejecución de los mismos es :


Primero se ejecuta el constructor de la clase Padre.
Segundo se ejecuta el constructor de la subclase.

Problema 1:


Plantear tres clases A, B, C que B herede de A y C herede de B. Definir un constructor a cada clase que muestre un mensaje. Luego definir un objeto de la clase C.


Programa:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Herencia3
{
public class A
{
public A()
{
Console.WriteLine("Constructor de la clase A");
}
}

public class B : A
{
public B()
{
Console.WriteLine("Constructor de la clase B");
}
}

public class C : B
{
public C()
{
Console.WriteLine("Constructor de la clase C");
}
}

class Prueba
{
static void Main(string[] args)
{
C obj1 = new C();
Console.ReadKey();
}
}
}

Como se puede ver con la ejecución del programa la salida por pantalla es:



Constructor de la clase A
Constructor de la clase B
Constructor de la clase C

Es decir cuando creamos un objeto de la clase C lo primero que se ejecuta es el constructor de la clase de nivel superior (en este caso la clase A), luego el constructor de la clase B y finalmente se ejecuta el constructor de la clase C.



Problema 2:


Plantear tres clases A, B, C que B herede de A y C herede de B. Definir un constructor a cada clase que reciba como parámetro un entero. Luego definir un objeto de la clase C.


Programa:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Herencia4
{
public class A
{
public A(int a)
{
Console.WriteLine(a);
}
}

public class B : A
{
public B(int b):base(b/2)
{
Console.WriteLine(b);
}
}

public class C : B
{
public C(int c):base(c/2)
{
Console.WriteLine(c);
}
}

class Prueba
{
static void Main(string[] args)
{
C obj1 = new C(20);
Console.ReadKey();
}
}
}

Como podemos ver la clase el constructor de la clase C debe llamar en forma explícita al constructor de la clase padre mediante la palabra clave base con el valor a pasar (en este ejemplo le pasamos el parámetro c dividido por dos):



public C(int c):base(c/2)

En forma similar el constructor de la clase B debe llamar al constructor de la clase A:



public B(int b):base(b/2)

Si ejecutamos el programa podemos ver que aparece por pantalla los números:



5
10
20

Donde definimos el objeto obj1 pasamos el valor 20, el constructor de la clase C llama al constructor de la clase B pasando el valor 10, luego el constructor de la clase B llama al constructor de la clase C pasando el valor 5. Como vimos anteriormente primero se ejecuta el constructor de la clase A mostrando el valor 5, seguidamente el constructor de la clase B mostrando el valor 10 y finalmente se ejecuta el constructor de la clase A mostrando el 20.




Opciones
Estadísticas
Creado 01.01.1970 a las 00:00 hs
Categoría C#

  • Medallas
  • 0
    Favoritos
  • 9576
    Visitas
  • 0
    Puntos
  • 0
    Seguidores
Comentarios
0
Cargando comentarios espera un momento...
No tienes permisos para comentar.

Para poder comentar necesitas estar Registrado. O.. ya tienes usuario? Logueate!
Autor del post
Ver perfil de Administrador Administrador
Hombre Administrador  Mensaje
43 1,352 1
Medallas
No tiene medallas
Tags
Posts relacionados