A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下:
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  ?

4 个回复

倒序浏览
Outer.this.a访问的是Outer的成员变量a,在视频里讲过这个地方的,this.a访问的是内部类里的a,内部类也相当于外部类的成员方法,就相当于在成员方法中去访问成员变量
回复 使用道具 举报
咪咪 来自手机 黑马帝 2011-11-13 07:48:34
藤椅
楼上,你的回答好像说反了,在外部其它类访问内部类时是用外部类名.this.变量。你再好好想想…
回复 使用道具 举报
内部类持有对外部类的引用,如果只有外部类一个变量,内部类可以直接调用,省略了this,而如果是内部类和外部类同名时,内部类是当前类,如果直接写a,会默认直接调用内部类的变量,想调用外部类,显然外部类的变量是静态变量,它是随着类的存在而存在的,所以调用它时,得用类名.this.变量名的格式
回复 使用道具 举报
this指当前对象自己,当我们在内部类中使用this时,这个this指的是内部类本身,这时如果我们要使用外部类的方法或变量的话,则应该在this前加上外部内的类名。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马