Sobrecarga de constructores
La sobrecarga de constructores es una
técnica para crear múltiples constructores con un conjunto diferente de
parámetros y un número diferente de parámetros. Nos permite usar una clase
de una manera diferente. La misma clase puede comportarse de un tipo
diferente en función de la sobrecarga de constructores. Con la
inicialización de un objeto, puede mostrar un mensaje de cadena simple mientras
que, en la segunda inicialización del objeto con el parámetro diferente, puede
procesar un cálculo aritmético.
Cómo sobrecargar un constructor
Si no ha definido ningún constructor, se creará automáticamente un
constructor predeterminado en el momento de la compilación. El constructor
predeterminado implícito no tiene parámetros de entrada ni cuerpo de método. Es
equivalente a lo siguiente.
public Book()
{
}
Para crear un constructor sobrecargado en C#, cambiará la firma de la
clase. En otras palabras, simplemente cambiará el número o el tipo de
datos de los parámetros de entrada del constructor.
public Book(string title, string author)
{
Title = title;
Author = author;
}
public Book(string title, string author, string publisher, int pubDate)
{
Title = title;
Author = author;
Publisher = publisher;
PubDate = pubDate;
}
En el fragmento de código anterior, he creado dos versiones sobrecargadas
de mi constructor de clase Book. El primero, en la línea 13, toma dos argumentos:
título y autor. Puedo crear un objeto Libro usando este constructor de
clase de la siguiente manera:
Book myBook =
new Book(
"Les Miserables",
"Victor Hugo");
El segundo constructor, que comienza en la línea 19, establece valores
iniciales para los cuatro parámetros. Así es como crearía una instancia de
la clase Libro utilizando esta versión del constructor de clases.
Book myBook =
new Book(
"Les Miserables",
"Victor Hugo",
"Lacroix, Verboeckhoven & Cie",
1862);
Ejemplo de constructores sobrecargados de C#
Mi clase Book completa tiene cuatro parámetros de lectura y escritura y dos
constructores sobrecargados. Esto me da flexibilidad con respecto a cómo
quiero crear mis instancias de objetos. Aquí está el código completo de la
clase:
class
Book
{
public
string Title {
get;
set; }
public
string Author {
get;
set; }
public
string Publisher {
get;
set; }
public
int PubDate {
get;
set; }
public Book(string title, string author)
{
Title = title;
Author = author;
}
public Book(string title, string author, string publisher, int pubDate)
{
Title = title;
Author = author;
Publisher = publisher;