黑马程序员技术交流社区

标题: 内部类与外部类的变量 [打印本页]

作者: 高海燕    时间: 2011-8-11 13:50
标题: 内部类与外部类的变量
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++;分别代表的是哪个类的变量?
作者: 匿名    时间: 2011-8-14 00:27
前两个代表内部类。后一个代表外部类。为什么?三言两语说不清,内部类的构造方法并不像外部类那样默认无参,而是模认有参,该参数就是外部类的一个实例对象。似乎说的不清楚,总的来说,如果内部类也有和外部类相同名字类变量,你要访问外部那个,只有第三种方法
作者: 匿名    时间: 2011-8-15 22:52
你首先要从变量所在的区域来分析,当我们调用一个方法时,如果方法的形参和类的成员名一样,如果要区分的话是不是用this,this引用的是成员变量,所以size是内部类Inner方法的形参,而this.size是内部类的成员,最后剩下的Outer3.this.size就是外部类的成员变量了。如果你问我为什么在内部类里引用外部类的成员变量要Outer3.this.size这样写的话:“因为内部类的对象是存在于外部类对象里面的,所以内部类对象里面会含有一个外部类对象的引用,我们知道如果在一个对象身上用this就代表引用的是自己,所以当你在内部类对象里面用this就代表当前这个内部类对象,那么如果我们要引用外部类对象的成员就要通过内部类东西里面含有的外部类对象的引用来操作,这就是干嘛要用《外部类类名。this。成员名字》来调用”




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