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.

Problema 1:

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.

Programa:


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)


Retornar