class AA{
   private int a = 3;
}
class BB{
   private int a = 4;
}
public class Composition {
   AA aa;
   BB bb;
   public static void main(String args[]) {
      new Composition().aa.a;  //无法访问a
   }
}

解决方案 »

  1.   

    private变量在类外面都不可以访问的
      

  2.   

    这是显而易见的,别说组合了,就是继承也不能在AA类外访问AA的私有方法,当然反射除外
      

  3.   

    你的aa是什么啊?一个空指针罢了,没有指向对象啊,即使AA中的a是public修饰,也不能访问啊。
    更何况是private 呢,原因上面的都说过了。
      

  4.   

    private 的作用保护变量不能被随意访问,修改
      

  5.   

    new Composition().aa.a;
    等于 Composition c=new Composition();  c.aa.a;
    1.AA类的aa并没有在堆栈中new出空间,自然空间也就不存在AA类的成员。2.AA类的aa被private修饰,除其在本类中使用,在其他类使用是会被禁止的。