2.11 SOBRECARGA DE CONSTRUCTORES

 

Puede haber casos que haya más de un constructor, el motivo por el cual pueden haber varios constructores es para darle diferentes estados iniciales a nuestros objetos. Volviendo al ejemplo de Uso_empleado donde solo disponemos de un constructor, se puede dar el caso de que haya un nuevo empleado en el cual desconocemos el sueldo y la fecha de alta en el contrato, solo tenemos la información del nombre. En este caso crearíamos un nuevo constructor para este último empleado con solo el nombre:

       public Empleado(String nom, double sue, int agno, int mes, int dia) {

            

             nombre = nom;

            

             sueldo = sue;

            

             GregorianCalendar calendario = new GregorianCalendar(agno, mes-1, dia);

            

             altacontrato = calendario.getTime();

             }

      

       public Empleado(String nom) {

            

             nombre=nom;

       }

Lo que hay que tener en cuenta cuando creamos un nuevo constructor es que no tiene que tener los mismos parámetros, si a este segundo constructor le pasamos los mismos parámetros que el primero evidentemente nos daría error. Si vamos al método main y creamos un nuevo objeto:

Empleado[] misEmpleados = new Empleado[4];

            

             misEmpleados[0] = new Empleado("Patricia Martinez", 85000, 2000, 03, 03);

            

             misEmpleados[1] = new Empleado("Paco Rodriguez", 45000, 2001, 05, 07);

            

             misEmpleados[2] = new Empleado("Antonio Morales", 42000, 2002, 12, 22);

            

             misEmpleados[3] = new Empleado("Rocio Escarti");

¿Cómo sabe Java que constructor estamos utilizando? Por el parámetro que le pasamos, en este último objeto solo le hemos pasado el parámetro del segundo constructor. Si probamos:



Como le he pasado solo el parámetro del nombre, el sueldo lo desconocemos y la fecha es null, también la desconocemos.

Si queremos que nos aparezca un sueldo y una fecha por defecto podemos hacerlo directamente:

misEmpleados[3] = new Empleado("Rocio Escarti", 30000, 2002, 01, 01);

Pero si en lugar de tener un nuevo empleado que desconociéramos el sueldo y la fecha de alta de contrato tuviéramos mil sería un problema porque tendríamos que ir uno por uno. Para evitar esto lo podemos hacer en el constructor que nos muestre un sueldo y una fecha de alta por defecto:

       public Empleado(String nom) {

            

             this(nom, 30000, 2002, 01, 01);

       }

La palabra this que ya hemos utilizado para diferenciar las variables de clase, en este caso la palabra this la utilizamos porque los parámetros que estamos utilizando del sueldo y la fecha son del primer constructor. Si probamos ahora:




2.10 MÉTODOS STATIC << >> 2.12 HERENCIA







No hay comentarios:

Publicar un comentario