本帖最后由 黑马朱超 于 2013-3-17 13:36 编辑
毕老师的视频上面关于静态内部类被外部其他类访问是这么说的。
1.在外部其他类中,如何直接访问static内部类的非静态成员呢?
new Outer.Inner().function();- class Outer
- {
- int x =3;
- static class Inner
- {
- void function ()
- {
- System.out.println(a);
- }
- }
- }
复制代码 2.在外部其他类中,如何直接访问static 内部类的静态成员呢?
Outer.Inner.function();- class Outer
- {
- int x =3;
- static class Inner
- {
- static void function ()
- {
- System.out.println(a);
- }
- }
- }
复制代码 问题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:
关于();
对于方法,每次编程都需要带()
对于类,只新建类的对象的时候带();在调用类的时候就不用带()了
|