黑马程序员技术交流社区

标题: 关于内部类的问题 [打印本页]

作者: 一帆风顺    时间: 2012-9-21 18:42
标题: 关于内部类的问题
本帖最后由 王博 于 2012-9-23 08:29 编辑

对于内部类比较明白,但是静态内部类就很朦胧了。。。。这是我看的一个题
class A
{
int a1=1;
static int a2=11;
class B
{
  int b1=a1;
  int b2=a2;
}

static class C
{
  int c1=new A().new B().b1+a2;
  static int c2=a2;
  int c3 =new A().a1;
}

public static void main(String[] args)
{
  new A().prt();
  
}
void prt()
{
  System.out.println("a1="+a1);
  A.B b=new A().new B();
  System.out.println("b1="+b.b1+"\n"+"b2="+b.b2);
  System.out.println("c2="+C.c2);
  C c=new C();
  System.out.println("c1="+c.c1+"\n"+"c3="+c.c3);
}
}

/*
没有明白C类里面的对象是怎么调用的???
*/

作者: 彭润生    时间: 2012-9-21 18:57
int c1=new A().new B().b1+a2;//这样写你就明白了,A a = new A();a.B ab = new a.B(); int c1 ab.b1 +a2分开写就是这样的
  static int c2=a2;
  int c3 =new A().a1;
}
作者: 陈振兴    时间: 2012-9-21 23:32
static class C { //静态内部类中只能调用外部类的静态变量,不能调用非静态变量
                int c1 = new A().new B().b1 + a2;//外部类直接调用了成员内部类 :
                A a = new A();                                        //A1 a = new A1();
                A.B b = a.new B();                                //A1.B b = a.new B();
                int cc = b.b1 + a2;                                //b.b1 + a2(这就是静态方法)
                //这就把3句话写成了一句话
               
                static int c2 = a2;
                int c3 = new A().a1;
        }





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2