黑马程序员技术交流社区

标题: 内部类和外部类同名变量访问问题 [打印本页]

作者: せR3n、何必装纯    时间: 2011-11-13 00:09
标题: 内部类和外部类同名变量访问问题
代码如下:
class Outer{
        public static int a = 2;
        class Inner{
                int a;
                public void show(){
                        System.out.println(this.a);
                        System.out.println(Outer.this.a);
                }
        }
}
public class Test{
        public static void main(String[] args){
                Outer.Inner in = new Outer().new Inner();
                in.show();
        }
}

为什么show方法第二个输出语句是  2  ?
作者: 张邦庆    时间: 2011-11-13 00:18
Outer.this.a访问的是Outer的成员变量a,在视频里讲过这个地方的,this.a访问的是内部类里的a,内部类也相当于外部类的成员方法,就相当于在成员方法中去访问成员变量
作者: 咪咪    时间: 2011-11-13 07:48
楼上,你的回答好像说反了,在外部其它类访问内部类时是用外部类名.this.变量。你再好好想想…
作者: 史晓霞    时间: 2011-11-13 08:11
内部类持有对外部类的引用,如果只有外部类一个变量,内部类可以直接调用,省略了this,而如果是内部类和外部类同名时,内部类是当前类,如果直接写a,会默认直接调用内部类的变量,想调用外部类,显然外部类的变量是静态变量,它是随着类的存在而存在的,所以调用它时,得用类名.this.变量名的格式
作者: 欧阳文愿    时间: 2011-11-13 08:22
this指当前对象自己,当我们在内部类中使用this时,这个this指的是内部类本身,这时如果我们要使用外部类的方法或变量的话,则应该在this前加上外部内的类名。




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