class Test {
public static void main(String[] args) {
new TeamLead(1);
}
public static class TeamLead extends Programmer {
private int numTeamLead=2;
public TeamLead(int numTeamLead) {
super(numTeamLead);
this.numTeamLead = numTeamLead;
employ();
}
protected void employ() {
System.out.println(numTeamLead + " teamlead");
}
}
public static class Programmer {
private final int numProgrammer;
public Programmer(int numProgrammer) {
this.numProgrammer = numProgrammer;
employ();
}
protected void employ() {
System.out.println(numProgrammer + " programmer");
}
}
}
Почему в первом выводе указано 0 тимлидов вместо 2 тимлидов?
Я объявил numTeamLead=2 перед выполнением apply() и, тем не менее, при первом выполнении метода use() значение numTeamLead по какой-то причине по умолчанию равно 0. Я знаю, что super(numTeamLead) не может использовать Programmer.employ(), поскольку он защищен, поэтому вместо этого он использует TeamLead.employ(). Но почему тогда по умолчанию для numTeamLead установлено значение 0 перед повторным использованием метода use(), хотя я уже инициализировал numTeamLead перед выполнением любого метода?
[/code] Почему в первом выводе указано 0 тимлидов вместо 2 тимлидов? Я объявил numTeamLead=2 перед выполнением apply() и, тем не менее, при первом выполнении метода use() значение numTeamLead по какой-то причине по умолчанию равно 0. Я знаю, что super(numTeamLead) не может использовать Programmer.employ(), поскольку он защищен, поэтому вместо этого он использует TeamLead.employ(). Но почему тогда по умолчанию для numTeamLead установлено значение 0 перед повторным использованием метода use(), хотя я уже инициализировал numTeamLead перед выполнением любого метода?
Существует проблема variable usersRepository, не инициализированная в конструкторе по умолчанию в этом классе
@Service
@RequiredArgsConstructor
public class UsersDetailsService implements UserDetailsService {