Constructores
Los constructores son un tipo especial de métodos que poseen las clases y
cuya finalidad es inicializar los campos de un objeto. Cada vez que se crea una
nueva instancia de un objeto, el sistema le asigna la cantidad de espacio que
necesite en el montículo ("heap") y acto seguido ejecuta el
constructor de la clase para llevar a cabo la inicialización de todas los
campos que lo requieran. A diferencia de otros métodos el constuctor no puede
tener tipo de retorno ni tener otro nombre diferente del de la propia clase en
que se define.
class Persona
{
public Persona(... lista de
parámetros ...)
{
... código de inicialización
...
}
}
Los constructores pueden sobrecargarse, de forma que podemos tener varios
de ellos y hacer que antes de ejecutar el cuerpo de su método se ejecute otro
utilizando this.
class Persona
{
public
string nombre;
public
Persona(string nombre) { this.nombre = nombre; }
public Persona():
this("José Expósito") {}
}
Persona p1 = new Persona();
Persona p2 = new Persona("Antonio Pérez");
En caso de no definir de forma explícita un constructor, se creará uno de
forma implícita sin parámetros que inicializará todas las variables a sus
valores por defecto.
Las asignaciones de valores presentes en las propias declaraciones de las
variables se ejecutarán antes que los constructores, y además, en el mismo
orden en que aparezcan. Esto se puede comprobar ejecutando el siguiente ejemplo:
// inicializacion.cs
using System;
class Persona
{
public string nombre =
"José Expósito";
public Persona(string nombre)
{
Console.WriteLine("antes
del constructor nombre = {0}", this.nombre);
this.nombre = nombre;
Console.WriteLine("tras
el constructor nombre = {0}", this.nombre);
}
public
static void Main()
{
Persona p = new
Persona("Pedro Castillo");
}
}
Estudiemos ahora como afecta el uso de la palabra
clave static a la inicialización de una clase. Si la aplicamos al
constructor, al igual que ocurria con la variables, tiene el efecto de hacer
que el código que ejecuta sea compartido por todas las instancias de una clase.
Este tipo de constructores se ejecutan antes de la creación de cualquier
instancia de la clase, y por supuesto, esto sucede una única vez. Cada clase
puede poseer un único constructor de este tipo y no puede tener parámetros. En
el caso de las variables estáticas, como sucedía con las no estáticas, estas se inicializan antes de la llamada
al constructor estático. En resumen, el orden de inicialización es:
1.
variables estáticas
2.
constructores estáticos
3.
variables no estáticas
4.
constructores no estáticos
DEMOSTRACIÓN
Fijese que todo el código se generá el constructor Alumno, En el método Main codificaremos lo siguiente: