小段程序求解释!内部类
package classDemo;
/**
* 内部类访问外部静态变量
* @author Administrator
*
*/
public class GroupThree {
private static int count;
private String name;
public class Student{
private int count;
private String name;
public void output(int count){
count++;
this.count++;
GroupThree.count++;
GroupThree.this.count++;
System.out.println(count+" "+this.count+" "
+GroupThree.count+" "+GroupThree.this.count);
}
}
public Student aStu() {
return new Student();
}
public static void main(String[] args) {
GroupThree g3 = new GroupThree();
GroupThree.count=10;
GroupThree.Student s1 = g3.aStu();
s1.output(5);
}
}
输出的结果是 6 1 12 12
前面给出的两个解毋庸置疑,但是后面给出的12,是什么原因呀??
------解决方案--------------------原因很简单:
GroupThree.count++;
GroupThree.this.count++;
这两行代码中的count实际均为private static int count;
我想你不明白的地方在这里GroupThree.this,你认为这个是Student对象吧?其实不是,它是指GroupThree使用new创建出来的对象。
------解决方案--------------------GroupThree.this.count 在以前的基础上加了一次。
------解决方案--------------------
public void output(int count){
count++;
this.count++;
GroupThree.count++;
System.out.println(count+" "+this.count+" "
+GroupThree.count+" "+GroupThree.this.count);
GroupThree.this.count++;
System.out.println(count+" "+this.count+" "
+GroupThree.count+" "+GroupThree.this.count);
}
添加进去,再运行看结果你就知道为什么不是11了!因为++了两次!然后才输出的!