maracaibo25 ha scritto:
l'errore sta nel "this (name, age)",credo perche il this () deve essere sempre la prima istruzione all'interno del costruttore
Esatto, ottimo!
La chiamata
this( ..... ); oppure
super( ..... ); con o senza argomenti infatti DEVE essere la
prima istruzione presente in un costruttore. Se non c'è una di queste invocazioni, il compilatore inserisce un super(); senza (ovviamente) argomenti.
Se scambi quelle due istruzioni (e idealmente con tutti i getter/setter corretti), Employee compila senza errori.
Però quei due costruttori sono fatti in modo poco utile/sensato. Li hanno fatti così solamente per vedere se si "casca" sui concetti dei costruttori.
In realtà per fare la cosa "buona" si doveva fare così:
// Questo è sensato e corretto
public Employee(String name, int age) {
this(name, age, 2000);
}
public Employee(String name, int age, int salary) {
setName(name);
setAge(age);
setSalary(salary);
}
Ovvero il costruttore completo, con tutti i dati, usa tutti i setter. Poi l'altro parziale invoca quello completo passando un default.