Почему при обращении из локального класса к переменной окружающего класса, после её инициализации с помощью вызова конструктора окружающего класса из конструктора локального класса, показывает её значение установленное по умолчанию?
interface ITest{
void getName();
}
class Test{
private String name;
Test(String name) {
this.name=name;
}
Test() { }
public ITest setName(String name1){
class Test1 extends Test implements ITest{
Test1 (String name1) {
super(name1);
}
@Override
public void getName(){
System.out.println(name);
}
}
return new Test1(name1);
}
}
public class Main {
public static void main(String[] args) {
Test test= new Test();// Запустится конструктор без параметров, name станет null.
ITest itest= test.setName("Имя"); // Здесь конструктор с параметром, установит переменной name значение "имя";
itest.getName(); // она все еще null.
}
}
Вывод: null
Изначально запустится конструктор без параметров, name станет null.
Почему null ведь должен сработать конструктор локального класса и вызвать конструктор родителя с параметром где переменной окружающего класса задастся значение "Имя" ???