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

本帖最后由 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后就只能通过类名创建呢?
静态可以通过类名.静态成员调用,但也可以通过创建对象进行调用啊!为什么内部类不能呢?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

4 个回复

倒序浏览
因为静态的固定写法是类名.静态方法或者类名.静态成员变量.所以内部类也就类似了
回复 使用道具 举报
466273082 发表于 2015-1-30 21:56
因为静态的固定写法是类名.静态方法或者类名.静态成员变量.所以内部类也就类似了 ...

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

嗯 这也是一种解释 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马