Почему выводится поле name = "main". И как сделать так, что бы выводилось "sout"?
public class Solution {
private String name;
Solution(String name) {
this.name = name;
}
private String getName() {
return name;
}
private void sout() {
new Solution("sout") {
void printName() {
System.out.println(getName());
System.out.println(name);
}
}.printName();
}
public static void main(String[] args) {
new Solution("main").sout();
}
}
Ответ
Создавая аннонимный класс, мы неявно наследуемся от класса Solution , соответственно, private поле и метод класса родителя в нем не виден, чтобы он стал доступен необходимо расширить область видимости и объявить их, хотя бы, protected
Комментариев нет:
Отправить комментарий