System.out.println("B()");
是你在执行B b=new B();的输出
而执行B b=new B();是在CLASS A内部执行的
不算外类引用

解决方案 »

  1.   

    new 一个子类对象当然不会生成一个父类对象
    除非在子类对象中调用
    不过   子类的构造方法必须得调用父类对象  
    如果没有调用   而父类又没有默认的构造方法  就会发生错误!是以为你写在了一个java文件里
    而一个java文件被认为是一个类
    private(只对本类可见)
    public  一切都可见
    protected 只对所以子类和本包可见
    默认的   只对本包可见   不是一个很好的属性
      

  2.   

    按java规范,构造函数必须是 public的,但是inner class的构造函数用private 为什么不出错我也搞不清楚,还没看到inner class这一部分.不敢乱说,有待查证……