黑马程序员技术交流社区

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

作者: 张雪萍    时间: 2013-3-27 10:07
标题: 关于内部类的小问题
本帖最后由 张雪萍 于 2013-3-27 19:56 编辑
  1. class Outer
  2. {
  3.         private static int x=3;
  4.         static class Inner
  5.         {
  6.                 static void function1()
  7.                 { int y=6;
  8.                         System.out.println(y);//打印结果为6
  9.                 }
  10.                 void function2()
  11.                 { int x=6;
  12.                         System.out.println(x);//打印结果为6
  13.                 }
  14.         }
  15. }
  16. class  InnerClassDemo1
  17. {
  18.         public static void main(String[] args)
  19.         {
  20.                 new Outer.Inner().function2();
  21.                
  22.                 Outer.Inner.function1();
  23.         }
  24. }
复制代码
调用内部类的两个方法具体是怎么分析,
作者: 我手心里的宝    时间: 2013-3-27 10:22
new Outer.Inner().function2();
这个方式是你先new内部类对象然后调用,内部类的方法,这个方法是非静态的
Outer.Inner.function1();
这个方式是,内部类是静态的,方法也是静态的
所以可以直接通过外部类名.内部类名.方法
作者: 高顺德    时间: 2013-3-27 10:42
因为function方法是静态方法所以直接用类名访问 因为Inner类是静态类也直接用类名访问
new Outer.Inner().function2()
等于
Outer.Inner oti=new Outer.Inner();
oti.function2()  ;                          
Outer.Inner.function1();


我测试了下 你在eclipse中直接用new Outer.Inner().function1()也是会出运行结果的 但是这句话下面会有个黄线 表示是警告 可以编译和运行 不知道这是怎么回事
作者: 罗胜华    时间: 2013-3-27 10:48
内部类 和外部类的知识点:
内部类想要访问外部类的成员变量 :在内部类中想要访问外部类的成员时,要使用 外部类名.this.成员名
外部类不能调用内部类的成员:
                    因为外部类生成的时候,内部类有可能还没有创建.
如果在外部类中一定要调用内部类的成员:
                    那么必须先创建一个内部类对象,通过内部类对象调用内部类的成员
作者: 程宁宁    时间: 2013-3-27 11:18
简单点说,静态属性,静态方法可以用类名直接引用.  非静态方法属性,需要有实例对象去调用.




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