黑马程序员技术交流社区

标题: 主函数如何直接调用静态内部类 [打印本页]

作者: 马如龙    时间: 2014-6-12 19:44
标题: 主函数如何直接调用静态内部类
  1. class Outer
  2. {
  3.         private static  int x = 3;

  4.        
  5.         static class Inner//静态内部类
  6.         {
  7.                 static void function()
  8.                 {
  9.                         System.out.println("innner :"+x);
  10.                 }
  11.         }

  12.         static class Inner2
  13.         {
  14.                 void show()
  15.                 {
  16.                         System.out.println("inner2 show");
  17.                 }
  18.         }

  19. }


  20. class  InnerClassDemo2
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 new Inner2().show();

  25.         }
  26. }
复制代码


InnerClassDemo2.java:29: 错误: 找不到符号
                new Inner2().show();
                    ^
  符号:   类 Inner2
  位置: 类 InnerClassDemo2
1 个错误

作者: 伊甸拾忆    时间: 2014-6-12 20:03
  1. // new Outer.Inner2().show(); //直接匿名访问
  2. Outer.Inner2 o = new Outer.Inner2(); //创建对象o
  3. o.show(); // 对象o调用show()方法
复制代码

作者: 马如龙    时间: 2014-6-13 00:26
伊甸拾忆 发表于 2014-6-12 20:03

谢谢,学的不错啊
作者: 想飞的鱼    时间: 2014-6-13 09:09
嗯,楼上说的对。这里在小结一下:
外部其他类访问内部类成员的格式:
当内部类定义在成位置时
      1,非私有,非静态——————可以在外部其他类中直接创建此内部类的对象,然后调用内部类中成员
                                          格式:外部类名.内部类名  变量名 = 外部类对象.内部类对象;
      2,非私有,静态———————(1)访问内部类中非静态成员:如:new Outer.Inner2().show();
                                                          (2)访问内部类中静态成员(直接类名调用):如:Outer.Inner.show2();
代码如下:
  1. class Outer
  2. {
  3.             static class Inner2//静态内部类
  4.         {
  5.                 void show()//非静态方法
  6.                 {
  7.                         System.out.println("inner2 show");
  8.                 }
  9.                                 static void show2()//静态方法
  10.                                 {
  11.                                         System.out.println("显示2");
  12.                                 }
  13.         }

  14. }

  15. class  InnerClassDemo2
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                                 new Outer.Inner2().show();

  20.                                 Outer.Inner2.show2();
  21.         }
  22. }
复制代码

作者: 四顾行者    时间: 2014-6-13 09:43
伊甸拾忆 发表于 2014-6-12 20:03

就是这样了
作者: a6217815    时间: 2014-6-13 09:49
外部类的对象都没有建立,怎么调用内部类啊....
作者: 坠花湮    时间: 2014-6-13 09:53
学习了 ,这些基础
作者: peterbu    时间: 2014-6-14 17:37
领教了,学习了!!!!!
作者: 215041631    时间: 2014-6-14 17:43
1L 2L回答都很完整了~




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