I got suprised when this program compiles
class OuterClass {
private int outer = 10;
public static void main(String...strings)
{
new OuterClass().amethod();
}
public void amethod()
{
InnerClass h = new InnerClass();
System.out.println("Inner " + h.inner); // How it is allowed to access the private member of Inner class
}
private class InnerClass
{
private int inner = 20; // private member
public InnerClass()
{
System.out.println("Outer " + outer); // Ok to access outer
}
}
}
inner( variable) is private member. So why
java is allowed to access it out side of the class InnerClass.