黑马程序员技术交流社区
标题:
帮忙看下这个问题,谢谢!
[打印本页]
作者:
杜成龙
时间:
2013-5-25 15:51
标题:
帮忙看下这个问题,谢谢!
本帖最后由 杜成龙 于 2013-5-26 11:14 编辑
class Outer
{
int x=3;
public void show()
{
int y=4;
class Inner
{
void methed()
{
System.out.println(this.y);
}
}
new Inner().methed();
}
}
class Yanzhen
{
public static void main(String[] args)
{
new Outer().show();
}
}
复制代码
各位,有谁能帮忙看下这个程序运行后为什么显示找不到y,谢谢!
作者:
画饼
时间:
2013-5-25 16:05
你这个代码我看的有点纠结,好高深的代码你这个Y,是定义在方法里面的,你这个类又定在方法里面了,那个Y只有方法运行的时候生效,其他时候不可访问!
作者:
王靖远
时间:
2013-5-25 16:05
先顶再看,建议楼主以后代码有层次感一点。方便阅读,这样很难看的。
作者:
蔡增辉
时间:
2013-5-25 16:07
你的内部类定义在了外部类的成员函数内;
y 是外部类成员函数中的局部变量,这时内部类若要调用 y, 必须把 y 用 final 修饰;
并且这时内部类调用函数中的局部变量 y ,是不能用 this.y 的,直接改为 y 即可;当然前提是y必须用 final 修饰;
作者:
王靖远
时间:
2013-5-25 16:12
class Outer
{
int x=3;
public void show()
{
final int y = 4;
class Inner
{
void methed()
{
System.out.println(y);
}
}
new Inner().methed();
}
}
class Yanzhen
{
public static void main(String[] args)
{
new Outer().show();
}
}
复制代码
作者:
王靖远
时间:
2013-5-25 16:14
内部类访问外部类的局部变量, 此局部变量必须被final修饰才可以。 被修饰后也就是一个常量了。 还有你那个this用的莫名其妙,你的内部类里根本没有y,this只在本类中有效,你搞个this有什么用啊。
作者:
棉/mg花/x糖
时间:
2013-5-25 16:31
王靖远 发表于 2013-5-25 16:14
内部类访问外部类的局部变量, 此局部变量必须被final修饰才可以。 被修饰后也就是一个常量了。 还有你那个 ...
6楼的哥们,回答的相当透彻,赞一个,建议版主给技术分......^_^
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2