I was experimenting with anonymous classes today. When I do System.out.println(super.x);
, it prints 12, and when I use System.out.println(x);
it prints 4. I thought super.x
would print 4 and was wondering if someone could please explain to me why this is?
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
}
};
}
}