Javaのアクセス指定の謎

これでメソッドfはOKでメソッドgがNGなのはなんで?

public class N{
    class A{
        private int a;
    }
    class B extends A{
        void f(A ar){
            System.out.println(ar.a);//OK
        }
        void g(){
            System.out.println(a);//コンパイルエラー
        }
    }
}


ちなみにNetBeans5.5のリファクタリングでアクセッサ作るとメソッドfもアクセッサを使うようになって、NetBeans6では両方アクセッサ使わないのでメソッドgでコンパイルエラーになります。