黑马程序员技术交流社区

标题: 关于static内部类的调用方式提问(如何理解) [打印本页]

作者: huyang936    时间: 2015-1-30 20:41
标题: 关于static内部类的调用方式提问(如何理解)
本帖最后由 huyang936 于 2015-1-31 07:36 编辑
  1. class InnerClass
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Outer.Inner oi = new Outer().new Inner();//报错,创建静态内部类必须通过调用外部类名创建即:Outer.Inner oi = new Outer.Inner();
  6.                                                                                                         //为什么内部类没加static前还可以通过外部类对象创建,加了static后就只能通过类名创建呢?
  7.         }
  8. }

  9. class Outer
  10. {
  11.         static int num = 100;
  12.         static class Inner
  13.         {
  14.                 public static void show()
  15.                 {
  16.                         System.out.println("Inner show..."+num);
  17.                 }
  18.         }
  19.         public void method()
  20.         {
  21.                 new Inner().show();
  22.         }
  23. }
复制代码
为什么内部类没加static前还可以通过外部类对象创建,加了static后就只能通过类名创建呢?
静态可以通过类名.静态成员调用,但也可以通过创建对象进行调用啊!为什么内部类不能呢?

作者: 466273082    时间: 2015-1-30 21:56
因为静态的固定写法是类名.静态方法或者类名.静态成员变量.所以内部类也就类似了
作者: huyang936    时间: 2015-1-31 07:29
466273082 发表于 2015-1-30 21:56
因为静态的固定写法是类名.静态方法或者类名.静态成员变量.所以内部类也就类似了 ...

静态可以通过类名.静态成员调用,但也可以通过创建对象进行调用啊!为什么内部类不能呢?
作者: syfsyf1993    时间: 2015-1-31 10:35
有时没有为什么 只要记住就行 慢慢的自己就会理解了
作者: huyang936    时间: 2015-1-31 14:27
syfsyf1993 发表于 2015-1-31 10:35
有时没有为什么 只要记住就行 慢慢的自己就会理解了

嗯 这也是一种解释 谢谢




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