日期:2014-05-20  浏览次数:20827 次

内部类的为题
Java code
class ca{
    private ca(){
        System.out.println("1");
    }
    
    class inner{
        private inner(){
            new ca();
        }
    }
    
    class inner2{
        public inner2(){
            new inner();
        }
    }
}

class ae{
    public ae(){
                new ca() // 不可以
        System.out.println("2");
    }
      
}



为什么 inner2 可以调用 inner 的 private 构造器。。。
ae 却不能 不能调用 ca类的private 构造器。。。。

------解决方案--------------------
这个基本没为什么吧,主要以类来划分独立性,类内类外,既然内部类属于该已划分的范畴,就没必要再划分来限制彼此内部类的访问性了吧。
------解决方案--------------------
因为ae不是ca的内部类。

你看看花括号,没有把ae扩在ca内,而是让ae和ca变成了两个独立的类。
------解决方案--------------------
inner2 是ca的一个内部成员,就像你在一个类里面定义了一个private int abc;一样,这个abc是private的,但是你仍然可以访问
------解决方案--------------------
这就是内部类的好处、