Home Foros Foro dudas Foro de Java Dudas de Java Respuesta a: Dudas de Java

Respuesta a: Dudas de Java

Home Foros Foro dudas Foro de Java Dudas de Java Respuesta a: Dudas de Java

#7443

Anónimo
Inactivo

Hola buenas, voy por el video 44 sobre el polimorfismo. En la clase Uso_Empleados tengo el problema que al ejecutar el programa el Id me lo marca en todos los empleados como 0. No entiendo que pude haber hecho mal, la variable estatica IdSiguiente me la marca como no usada, pero en el constructor lo tengo como Juan, sumando cada vez que se llama al constructor y otra instrucción igualandola a la variable Id. Os paso el codigo por si identificais el problema.

Gracias por adelantado

package poo;

import java.util.*;

public class Uso_Empleado {

public static void main(String[] args) {
// TODO Auto-generated method stub

Jefatura jefe_RRHH=new Jefatura("Víctor", 55000, 2022, 5, 28);

jefe_RRHH.estableceIncentivo(2570);

Empleado[] misEmpleados=new Empleado[6];//se instancian 3 objetos mediante un array

//Aqui se establece los valores de las propiedades de los objetos, propiedades establecidas en el metodo constructor

misEmpleados[0]=new Empleado("Paco Gomez", 85000, 1990, 12, 17);

misEmpleados[1]=new Empleado("Ana Lopez", 95000, 1995, 06, 02);

misEmpleados[2]=new Empleado("MarÌa MartÌn", 105000, 2002, 03, 15);

misEmpleados[3]=new Empleado("Antonio", 30000, 2009, 11, 9);

misEmpleados[4]=jefe_RRHH; //Polimorfismo en acción. Principio de sustitución

misEmpleados[5]=new Jefatura("María", 95000, 1999, 5, 26);

for(Empleado e:misEmpleados){

e.subeSueldo(5);

}

for(Empleado e: misEmpleados){

System.out.println("Nombre: "+ e.dameNombre() + " Sueldo: " + e.dameSueldo()
+ " Fecha de Alta: " + e.dameFechaContrato());

System.out.println();

}

}

}

class Empleado {

public Empleado(String nom, double sue, int agno, int mes, int dia){//metodo constructor se les pasa unos parametros

nombre=nom;

sueldo=sue;

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

altaContrato= calendario.getTime();

++IdSiguiente;

IdSiguiente=Id;

}

public Empleado(String nom){

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

}

public String dameNombre(){ //getter

return nombre + " Id: " + Id;

}

public double dameSueldo(){ //getter

return sueldo;

}

public Date dameFechaContrato(){ //getter

return altaContrato;

}

public void subeSueldo(double porcentaje){ //setter

double aumento=sueldo*porcentaje/100;

sueldo=sueldo+aumento;

}

private String nombre;

private double sueldo;

private Date altaContrato;//Importamos paquete java.util

private static int IdSiguiente;

private int Id;

}

class Jefatura extends Empleado{

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

super(nom, sue, agno, mes, dia);

}

public void estableceIncentivo(double b){

incentivo=b;

}

public double dameSueldo(){

double sueldoJefe=super.dameSueldo();

return sueldoJefe + incentivo;

}

private double incentivo;

}