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)