Why java compiler is not restricting from accessing a private attribute from other class? I have inner class which has a attribute 'a' with modifier 'private'. I can able to access this variable with its instance variable out side the class. see the code below.
package com.test;
public class Test {
    public Test() {
    }
    public static void main(String[] args) {
        new Test().execute(); // test method
    }
    public void execute() {
        InnerClass innerClassInstance = new InnerClass();
        // accessing private member from other class instance, HOW?
        System.out.println(innerClassInstance.a);
        InnerStaticClass innerStaticClassInstance = new InnerStaticClass();
        // accessing private member from other class instance, HOW?
        System.out.println(innerStaticClassInstance.a);
    }
    private final class InnerClass {
        private int a; // accessible only in InnerClass??
    }
    private final static class InnerStaticClass {
        private int a; // accessible only in InnerClass??
    }
}
 
     
     
     
     
    