インナークラスでは、privateでもフィールドが読める理由がわかりません。
�Bは内側から外側だから分からないでもないのですが、
�@、�Aはなぜアクセスできてしまうのか教えてください。

public class Outer{
 private int outerVar = 1;
 public static void main(String[] args){
  Outer out = new Outer();
  Inner in = out.new Inner();
  
  System.out.println(out.outerVar); //当然OK
  System.out.println(in.innerVar); //�@privateなのに読込OK?
  in.print(); //�Aprivateメソッド?
 }
 private class Inner {
  private int innerVar = 2;
  private void print(){
   System.out.println(outerVar); //�BOuterのprivate!?
  }
 }
}