黑马程序员技术交流社区

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

作者: sanguodouble1    时间: 2014-4-17 14:59
标题: 关于内部类的一个问题
本帖最后由 sanguodouble1 于 2014-4-18 09:44 编辑

问大家一个问题,就是方法内部类的
  1.         public void m() {
  2.                 final int b = 0;
  3.                 class Inner {
  4.                         int a = b; //不报错
  5.                          System.out.println(b);//编译器报错
  6.                 }
  7.                 System.out.println(b);//不报错
  8.         }
复制代码
就是上面这个int b,为什么这样打印编译器会报错
作者: 呆呆沙师妹    时间: 2014-4-17 15:05
你应该将System.out.println(b);//编译器报错 这执行语句放入类中的函数中。它不能独立存在于类中。
作者: ⒈心只霸占沵    时间: 2014-4-17 15:09
类是有属性和方法组成对吧?
  内部类也是个类,所以也是由属性和方法组成,所以Inner类中的int b 它是属性
  System.out.println(b);则是代码 不是方法也不是属性,肯定会报错的
作者: 左拉    时间: 2014-4-17 15:12
System.out.println(b);是执行语句,只能存在放在方法之中啊,不能单独在类中使用
作者: Teemo_Mann    时间: 2014-4-17 15:19
内部类也是类,只能有方法和属性
我修改了一下你的方法就不报错了
  1.         public void m() {
  2.             final int b = 0;
  3.             class Inner {
  4.                     int a = b; //不报错
  5.                     public void c(){
  6.                             System.out.println(b);//这句话是代码,只能放在方法中,这样就没错了
  7.                     }
  8.             }
  9.             System.out.println(b);//不报错
  10.         }
复制代码

作者: xtxiaolu    时间: 2014-4-17 15:32
public void m() {
        final int b = 0;
        class Inner {
                int a = b; //不报错
               
                void b () {
                 System.out.println(b);//编译器报错  //语句不能直接放到类里面
                }
        }
        System.out.println(b);//不报错
        }






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