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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马朱超 中级黑马   /  2013-3-13 12:45  /  1384 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马朱超 于 2013-3-17 13:36 编辑

毕老师的视频上面关于静态内部类被外部其他类访问是这么说的。
1.在外部其他类中,如何直接访问static内部类的非静态成员呢?
new Outer.Inner().function();
  1. class Outer
  2. {
  3.         int x =3;
  4.        static class Inner
  5.        {
  6.             void function ()
  7.                            {
  8.                              System.out.println(a);
  9.                              }
  10.         }
  11. }
复制代码
2.在外部其他类中,如何直接访问static 内部类的静态成员呢?
Outer.Inner.function();
  1. class Outer
  2. {
  3.              int x =3;
  4.                             static class Inner
  5.                             {
  6.          static                                void function ()
  7.                                                     {
  8.                                                              System.out.println(a);
  9.                                                      }
  10.                             }
  11.                 }

复制代码
问题1:
这两个代码的加载过程是不是这样的:
new Outer.Inner().function();
1.因为Outer不是静态,Inner是静态的,需要加载Outer后才能调用Inner
2.调用Inner,创建Outer.Inner()的匿名对象[堆内存中]
3.匿名对象调用方法
Outer.Inner.function();
因为Inner.class和它的function()都是静态的,编译的时候就进入了静态区
1.加载Outer类到内存
2.调用Inner类
3.调用function();
问题2:
关于();
对于方法,每次编程都需要带()
对于类,只新建类的对象的时候带();在调用类的时候就不用带()了


评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览
首先,当Out类文件中的成员被访问到的时候,Out.class文件就会加载进内存,由于内部类是静态的,它会随着外部类的加载而加载。它会加载进方法区的静态区。
第二,我们知道 调用方法的方式有两种,一是用类名直接调用,但前提是被调用的是静态的。二是通过创建对象来调用。
第三,内部类的位置问题。只有内部类在外部类的成员位置上,才能被这些static 以及权限修饰符来修饰。出现在局部位置是不可以的
上述代码中,第一个代码块,静态内部类中的非静态成员函数,调用它时,就需要通过第二种方式来调用了,调用的格式,new 外部类名.内部类名().非静态成员函数。
第二个代码块,静态内部类中的静态成员,此时,可用类名调用,而内部类的类名是   外部类名.内部类名
你所说的关于() ,看看对象创建的格式,和类对成员的直接调用格式这些基本概念就可以了

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
袁术森 发表于 2013-3-13 13:01
首先,当Out类文件中的成员被访问到的时候,Out.class文件就会加载进内存,由于内部类是静态的,它会随着外 ...

陈舵主 最近怎么出来了个猫腻 是何许人也
回复 使用道具 举报
若仍有问题,请继续追问;没问题的话,请将帖子的分类改成【已解决】~
回复 使用道具 举报
袁术森 发表于 2013-3-13 13:30
陈舵主 最近怎么出来了个猫腻 是何许人也

我孤陋寡闻,但应该是前辈~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马