/*
Вспомним наследование
*/
public class Solution extends C implements JustAnInterface{
private class A {
protected String value = "A";
public A() {
System.out.print(value);
}
}
private A a = new A() {
{ //у анонимных классов нет своих конструкторов, но что-то можно сделать в блоке инициализации класса
value = "Y";
// решил проверить что выведет
System.out.println("\n" + super.getClass());
// эта строка выводит: class com.javarush.task.task24.task2411.Solution$1
// Почему??? Ведь super для данного внутреннего класса это класс A
if (super.getClass().getName().contains(".Solution$")) {
System.out.print(value);
}
}
};
public Solution() {
System.out.print("S");
}
public static void main(String[] args) {
new Solution();
}
}
Почему выражение
super.getClass());
указывает не на предка, как я ожидал? Ведь super же! И вызываем мы его из внутреннего класса же!
А оно выводит: class com.javarush.task.task24.task2411.Solution$1
Это ведь имя анонимного класса, присвоенное ему компилятором, я не ошибаюсь?
partiec
33 уровень
Вопрос про super во внутреннем классе.
Решен
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Method
6 июня 2023, 19:57
super для А это Object)
Ответ:)
+1