请问大家,以下四种在外部类中创建内部类对象的方法有什么区别?请比较一下这三种方法。
前提:A是外部类,B是A的内部类,getB()是A中一个返回B的对象的函数。
1. B b = getB();
2. A a = new A();
   A.B b = a.getB();
3. B b = new B();
4. A a = new A();
   A.B b = a.new B();

解决方案 »

  1.   

    1.只有你main函数在A类中,才可以用“1. B b = getB(); ”方法来创造内部类B。
    2.这是比较正常的使用方法,只要main函数类有足够访问权限都可以用,与4的差别是B类的构造函数可以是private的,
      因为B类是在类A内部创建的。
    3.这种方法最好别用,如果main函数在A类中有可能能用,否则不可能使用。内部类不能在类外不经由外部类创建。
    4.这是最常用的创建方法了,只要main函数类有足够访问权限都可以用(比如A、B类都是public权限就可以)。
      

  2.   

    1.只有你main函数在A类中,才可以用“1. B b = getB(); ”方法来创造内部类B。 
    2.这是比较正常的使用方法,只要main函数类有足够访问权限都可以用,与4的差别是B类的构造函数可以是private的, 
      因为B类是在类A内部创建的。 
    3.这种方法最好别用,如果main函数在A类中有可能能用,否则不可能使用。内部类不能在类外不经由外部类创建。 
    4.这是最常用的创建方法了,只要main函数类有足够访问权限都可以用(比如A、B类都是public权限就可以)。