68 - Sobrecarga del constructor |
Como hemos visto el constructor es un método y como tal podemos sobrecargarlo, es decir definir varios constructores con distintas cantidades o tipos de parámetros.
Implementar una clase que represente un titulo en pantalla. Definir un constructor que reciba el string del título y otro constructor que reciba el string del título y la columna y fila donde mostrarlo.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SobrecargaConstructor1
{
class Titulo
{
private string tit;
private int columna;
private int fila;
public Titulo(string t)
{
tit = t;
columna = 1;
fila = 1;
}
public Titulo(string t, int col, int fil)
{
tit = t;
columna = col;
fila = fil;
}
public void Imprimir()
{
Console.SetCursorPosition(columna, fila);
Console.Write(tit);
}
static void Main(string[] args)
{
Titulo t1 = new Titulo("Hola Mundo");
t1.Imprimir();
Titulo t2 = new Titulo("Hola Mundo",40,12);
t2.Imprimir();
Console.ReadKey();
}
}
}
Hemos planteado dos constructores, uno que recibe un string y otro que recibe un string y dos enteros (los mismos inicializan atributos de la clase):
public Titulo(string t)
{
tit = t;
columna = 1;
fila = 1;
}
public Titulo(string t, int col, int fil)
{
tit = t;
columna = col;
fila = fil;
}
en la Main definimos dos objetos de la clase Titulo, el primero llama al constructor con un parámetro, por lo que el mensaje aparece en la columna 1 y fila 1:
Titulo t1 = new Titulo("Hola Mundo");
t1.Imprimir();
El segundo objeto que creamos se llama al constructor que tiene tres parámetros:
Titulo t2 = new Titulo("Hola Mundo",40,12);
t2.Imprimir();
Si desde un constructor queremos llamar a otro constructor de la clase lo debemos hacer con la palabra this seguida por los parámetros del constructor a llamar:
public Titulo(string t)
: this(t, 1, 1)
{
}
public Titulo(string t, int col, int fil)
{
tit = t;
columna = col;
fila = fil;
}
En el ejemplo anterior cuando llamamos al constructor que tiene un parámetro el mismo primero llama al constructor que tiene tres parámetros y luego se ejecuta el código del constructor inicial (en este ejemplo no tenemos código dentro del constructor)