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