黑马程序员技术交流社区
标题:
内部类的访问问题
[打印本页]
作者:
江杰
时间:
2012-5-15 15:56
标题:
内部类的访问问题
static class AbsDemo
{
abstract void show();
}
class Outer
{
int x= 3;
/*
class Inner extends AbsDemo
{ int x= 4;
void show()
{ int x=5;
system.out.println("show:"+x);//复写
}
}
我这里定义了一个类 和内部类,这个x到底访问到了那个,要是要访问3,4,5分别怎么办呢???看了视频还是没理解透彻啊!!!
作者:
冯心程
时间:
2012-5-15 16:03
x是5
this.x是4
Outer.this.x是3
如果4 和5 的定义都没有 那么X是3 因为省略的是Outer.this.x
楼主懂否{:soso_e121:}
作者:
黄或俊
时间:
2012-5-15 16:06
访问到的是5,它现在在方法里面找,方法里面有的就用方法里面的,找不到就去内部类找,再找不到就去外部类,逐层向外寻找
如果想要找4=====用this.x
如果想要找3=====用Outer.this.x
作者:
田林
时间:
2012-5-15 18:32
首先楼主有个错误:static修饰的类必须是内部类。而AbsDemo不是内部类,所以不能被static修饰。
下面代码可以帮楼主理解x到底访问哪个值:
public class Test2 {
public static void main(String[] args) {
Outer.Inner inner = new Outer().new Inner(); //生成一个内部类引用
inner.show();
}
}
class Outer {
int x = 3;
class Inner {
int x = 4;
void show() {
int x = 5;
System.out.println("show:" + x); // 内部类方法中的x
System.out.println("show:" + this.x); // 内部类中的成员变量x
System.out.println("show:" + Outer.this.x); // 外部类中的成员变量x
}
}
}
打印结果为:
show:5
show:4
show:3
作者:
江杰
时间:
2012-5-15 18:39
冯心程 发表于 2012-5-15 16:03
x是5
this.x是4
Outer.this.x是3
明了,,,感谢
作者:
刘_浩
时间:
2012-5-15 23:19
楼上均为正解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2