Код: Выделить всё
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");
}
}
}
Я объявил numTeamLead=2 перед выполнением apply() и, тем не менее, при первом выполнении метода use() значение numTeamLead по какой-то причине по умолчанию равно 0. Я знаю, что super(numTeamLead) не может использовать Programmer.employ(), поскольку он защищен, поэтому вместо этого он использует TeamLead.employ(). Но почему тогда по умолчанию для numTeamLead установлено значение 0 перед повторным использованием метода use(), хотя я уже инициализировал numTeamLead перед выполнением любого метода?
Подробнее здесь: https://stackoverflow.com/questions/785 ... aults-to-0