Sie sind auf Seite 1von 6

INSTITUTO TECNOLÓGICO SUPERIOR DE ESCÁRCEGA

INGENIERÍA EN SISTEMAS COMPUTACIONALES

MAPA CONCEPTUAL
CONSTRUCTOR

ISMB -3

BR. FRANCISCO JESÚS KANTÚN HERNÁNDEZ

TOPICOS SELECTOS DE PROGRAMACION


Ing. FRANCISCO SALVADOR BALLINA SÁNCHEZ

27/08/2010
CONSTRUCTOR

CONSTRUCTOR

LOS CONSTRUCTORES SON MÉTODOS DE


CLASE QUE SE EJECUTAN CUANDO SE CREA
LOS CONSTRUCTORES SON METODOS DE UN OBJETO DE UN TIPO DETERMINADO.
CLASE QUE SE EJECUTAN CUANDO SE LOS CONSTRUCTORES TIENEN EL MISMO
CREA UN OBJETO DE UN TIPO NOMBRE QUE LA CLASE Y,
DETERMINADO. NORMALMENTE, INICIALIZAN LOS
MIEMBROS DE DATOS DEL NUEVO OBJETO

LOS CONSTRUCTORES PERMITEN AL LOS CONSTRUCTORES PERMITEN AL


PROGRAMADOR ESTABLECER VALORES PROGRAMADOR ESTABLECER VALORES
PREDETERMINADOS, LIMITAR LA PREDETERMINADOS, LIMITAR LA
CREACIÓN DE INSTANCIAS Y ESCRIBIR CREACIÓN DE INSTANCIAS Y ESCRIBIR
CÓDIGO FLEXIBLE Y FÁCIL DE LEER. CÓDIGO FLEXIBLE Y FÁCIL DE LEER.

SINTAXIS
public class Taxi
{
public bool isInitialized;
public Taxi()
{
isInitialized = true;
}
}

class TestTaxi
{
static void Main()
{
Taxi t = new Taxi();
System.Console.WriteLine(t.isInitialized);
}
}

2
CONSTRUCTORES
Cada vez que se crea una clase o estructura, se llama a su constructor. Una clase o estructura puede
tener varios constructores que toman argumentos diferentes. Los constructores permiten al programador
establecer valores predeterminados, limitar la creación de instancias y escribir código flexible y fácil de
leer.

Si no proporciona un constructor para el objeto, C# creará uno de forma predeterminada que crea
instancias del objeto y establecer las variables miembro con los valores predeterminados indicados en:
Tabla de valores predeterminados (Referencia de C#). Las clases y estructuras estáticas también pueden
tener constructores.

Los constructores son métodos de clase que se ejecutan cuando se crea un objeto de un tipo
determinado. Los constructores tienen el mismo nombre que la clase y, normalmente, inicializan los
miembros de datos del nuevo objeto.

En el ejemplo siguiente, una clase denominada Taxi se define con un constructor simple. Esta clase crea
instancias con el operador new. El operador new invoca el constructor Taxi inmediatamente después de
asignar la memoria al nuevo objeto.

C#
public class Taxi
{
public bool isInitialized;
public Taxi()
{
isInitialized = true;
}
}

class TestTaxi
{
static void Main()
{
Taxi t = new Taxi();
System.Console.WriteLine(t.isInitialized);
}
}

Un constructor que no toma ningún parámetro se denomina constructor predeterminado. Se invocan los
constructores predeterminados cada vez que se crea una instancia de un objeto mediante el operador
new y no se proporciona ningún argumento a new. Para obtener más información, vea Constructores de
instancias (Guía de programación de C#).

A menos que la clase sea estática, a las clases sin constructores se les asigna un constructor público
predeterminado a través del compilador de C# con el fin de habilitar la creación de instancias de clases.
Para obtener más información, vea Clases estáticas y sus miembros (Guía de programación de C#).

Es posible evitar que se creen instancias de una clase mediante la conversión del constructor a privado,
como se muestra a continuación:

2
C#
class NLog
{
// Private Constructor:
private NLog() { }

public static double e = System.Math.E; //2.71828...


}

Para obtener más información, vea Constructores privados (Guía de programación de C#).

Los constructores para los tipos struct son similares a los constructores de clases, pero los tipos structs
no pueden contener un constructor predeterminado explícito porque el compilador proporciona uno
automáticamente. Este constructor inicializa cada campo de la estructura en los valores predeterminados
mostrados en la Tabla de valores predeterminados (Referencia de C#). Sin embargo, este constructor
predeterminado sólo se invoca si se crean instancias de la estructura con new. Por ejemplo, en este
código se utiliza el constructor predeterminado para Int32, lo que garantiza que se inicializa el tipo
integral:

int i = new int();


Console.WriteLine(i);

Sin embargo, el código siguiente da como resultado el Error del compilador CS0165 porque no se utiliza
new y se intenta utilizar un objeto que no se ha inicializado:

int i;
Console.WriteLine(i);

Alternativamente, se pueden inicializar objetos basados en structs o asignarse y, a continuación,


utilizarse de la forma siguiente:

int a = 44; // Initialize the value type...


int b;
b = 33; // Or assign it before using it.
Console.WriteLine("{0}, {1}", a, b);

En consecuencia no se requiere llamar al constructor predeterminado para un tipo de valor.

Tanto las clases como las structs pueden definir constructores que acepten parámetros. Se debe llamar a
constructores que toman parámetros a través de una instrucción new o base. Las clases y las structs
también pueden definir varios constructores y no se requiere ninguno para definir un constructor
predeterminado. Por ejemplo:

C#
public class Employee
{
public int salary;

public Employee(int annualSalary)


{
salary = annualSalary;
}

2
public Employee(int weeklySalary, int numberOfWeeks)
{
salary = weeklySalary * numberOfWeeks;
}
}

Esta clase se puede crear mediante cualquiera de las siguientes instrucciones:

C#
Employee e1 = new Employee(30000);
Employee e2 = new Employee(500, 52);

Cualquier constructor puede utilizar la palabra clave base para llamar al constructor de una clase base.
Por ejemplo:

C#
public class Manager : Employee
{
public Manager(int annualSalary)
: base(annualSalary)
{
//Add further instructions here.
}
}

En este ejemplo, se llama al constructor de la clase base antes de ejecutar el bloque del constructor. La
palabra clave base se puede utilizar con o sin parámetros. Cualquier parámetro del constructor se puede
utilizar como parámetro de base o como parte de una expresión. Para obtener más información, vea
base (Referencia de C#).

En una clase derivada, si no se llama explícitamente al constructor de la clase base mediante la palabra
clave base, se llama implícitamente al constructor predeterminado, si hay uno. Esto significa que las
siguientes declaraciones del constructor son efectivamente las mismas:

C#
public Manager(int initialdata)
{
//Add further instructions here.
}
C#
public Manager(int initialdata) : base()
{
//Add further instructions here.
}

Si una clase base no proporciona un constructor predeterminado, la clase derivada debe realizar una
llamada explícita a un constructor base mediante base.

Un constructor puede invocar a otro constructor en el mismo objeto a través de la palabra clave this. Al
igual que base, this se puede utilizar con o sin parámetros y cualquier parámetro en el constructor está
disponible como parámetro para this o como parte de una expresión. Por ejemplo, el segundo
constructor del ejemplo anterior se puede rescribir con this:

2
C#
public Employee(int weeklySalary, int numberOfWeeks)
: this(weeklySalary * numberOfWeeks)
{
}

El uso de la palabra clave this utilizada anteriormente hace que este constructor se denomine:

C#
public Employee(int annualSalary)
{
salary = annualSalary;
}

Los constructores se pueden marcar como public, private, protected, internal o protected internal.
Estos modificadores de acceso definen cómo los usuarios de la clase pueden construir la clase. Para
obtener más información, vea Modificadores de acceso (Guía de programación de C#).

Un constructor se puede declarar como estático mediante la palabra clave static. Se llama
automáticamente a los constructores estáticos de forma inmediata antes de que se tenga acceso a
cualquier campo estático y, normalmente, se utilizan para inicializar los miembros de clase estáticos. Para
obtener más información, vea Constructores estáticos (Guía de programación de C#).

Das könnte Ihnen auch gefallen