黑马程序员技术交流社区
标题:
关于内部类的一个问题
[打印本页]
作者:
sanguodouble1
时间:
2014-4-17 14:59
标题:
关于内部类的一个问题
本帖最后由 sanguodouble1 于 2014-4-18 09:44 编辑
问大家一个问题,就是方法内部类的
public void m() {
final int b = 0;
class Inner {
int a = b; //不报错
System.out.println(b);//编译器报错
}
System.out.println(b);//不报错
}
复制代码
就是上面这个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
内部类也是类,只能有方法和属性
我修改了一下你的方法就不报错了
public void m() {
final int b = 0;
class Inner {
int a = b; //不报错
public void c(){
System.out.println(b);//这句话是代码,只能放在方法中,这样就没错了
}
}
System.out.println(b);//不报错
}
复制代码
作者:
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