A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一帆风顺 中级黑马   /  2012-9-21 18:42  /  1262 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王博 于 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类里面的对象是怎么调用的???
*/

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
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;
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
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;
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马