Я экспериментировал с анонимными классами сегодня. Когда я делаю System.out.println(super.x);
, он печатает 12, и когда я использую System.out.println(x);
, он печатает 4. Я думал, что super.x
будет печатать 4 и задавался вопросом, может ли кто-нибудь объяснить мне, почему это?
public class AnonClass {
private int x = 1;
public AnonClass(int x) {
this.x = x;
}
public static void main(String[] args) {
AnonClass test = new AnonClass(4);
test.testMethod();
}
public void testMethod() {
AnonClass anon = new AnonClass(12) {
{
System.out.println(super.x); //Prints 12
System.out.println(x); //prints 4
}
};
}
}