黑马程序员技术交流社区
标题:
内部类问题
[打印本页]
作者:
张智文
时间:
2013-8-9 17:11
标题:
内部类问题
/*呵呵,,,下面的例子里,???处是填上什么内容,可以显示 Inner:6
1.直接填写 x,打印输出:Inner:9 //局部变量,就近调用;
2.直接填写Outer.this.x 打印输出为:Inner:5 //调用外部类的当前对象之成员变量
3.什么情况能够显示 Inner:6 呢???*/
class Outer{
private int x=5;
void OuterDo()
{
int x=6;
class Inner
{
int x=9;
void Do()
{
System.out.println("Inner:" + ? );
}
}
new Inner().Do();
}
}
class InterDemo
{
public static void main(String[] args)
{
new Outer().OuterDo();
}
}
复制代码
作者:
神之梦
时间:
2013-8-10 00:18
6{:soso_e128:}
作者:
封号了...
时间:
2013-8-10 01:46
本帖最后由 封号了... 于 2013-8-10 01:47 编辑
你是想取Outer类的OuterDo()方法中的int 6吧!
只能把int x = 9;删了 然后将 int = 6;前面加个final
其实如果取外部类中的成员变量应该是Outer.this.x --->5
外部类中方法的值就是
class Outer{
private int x=5;
int OuterDo()
{
int x=6;
return x;
}
void here(){
class Inner
{
void Do()
{
System.out.println("Inner:" + Outer.this.OuterDo() );
}
}
new Inner().Do();
}
}
public class InterDemo
{
public static void main(String[] args)
{
new Outer().here();
}
}
复制代码
如果你就想现在这样访问只能把int x = 9;里的这个x 定义为其他名字,不然会输出中的x会默认为当前方法中的变量
而且必须要用final修饰(这个不是太明白)——————>求高人指点
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2