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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高海燕 黑马帝   /  2011-8-11 13:50  /  2695 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Outer3{
    private int size;
    public class Inner{
       private int size;
       public void dostuff(int size){
               size++;               
               this.size;                 
               Outer3.this.size++;
        }  }
}
上面的是是size++,this.size,Outer3.this.size++;分别代表的是哪个类的变量?

2 个回复

倒序浏览
黑马网友  发表于 2011-8-14 00:27:41
沙发
前两个代表内部类。后一个代表外部类。为什么?三言两语说不清,内部类的构造方法并不像外部类那样默认无参,而是模认有参,该参数就是外部类的一个实例对象。似乎说的不清楚,总的来说,如果内部类也有和外部类相同名字类变量,你要访问外部那个,只有第三种方法
回复 使用道具 举报
黑马网友  发表于 2011-8-15 22:52:57
藤椅
你首先要从变量所在的区域来分析,当我们调用一个方法时,如果方法的形参和类的成员名一样,如果要区分的话是不是用this,this引用的是成员变量,所以size是内部类Inner方法的形参,而this.size是内部类的成员,最后剩下的Outer3.this.size就是外部类的成员变量了。如果你问我为什么在内部类里引用外部类的成员变量要Outer3.this.size这样写的话:“因为内部类的对象是存在于外部类对象里面的,所以内部类对象里面会含有一个外部类对象的引用,我们知道如果在一个对象身上用this就代表引用的是自己,所以当你在内部类对象里面用this就代表当前这个内部类对象,那么如果我们要引用外部类对象的成员就要通过内部类东西里面含有的外部类对象的引用来操作,这就是干嘛要用《外部类类名。this。成员名字》来调用”
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马