内部类访问外部类的成员变量,谁能解释一下
public class PrivateConstructor {/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new A(1);
a.getB().print();
}
}
class A{
int a;
private A(){}
public A(int a){
this.a=a;
}
class B extends A{
int b;
void print(){
System.out.println("B in A " + a);
System.out.println("B in A " + A.this.a);
}
}
B getB(){
return new B();
}
}
B in A 0
B in A 1
第一个访问的a为什么是0,难道内部类就把这个a当做一个普通变量吗? --------------------编程问答-------------------- mark..明天来看解释 --------------------编程问答-------------------- 刚debug了一下
m.getB().print();中执行m.getB()的时候要走一遍执行A的无参构造方法
private(){}
其中执行return new B();
1.刚开始的时候B对象中的a 和 B均初始化为0 而其中的指向A的变量值为null,
2然后走一遍A的构造方法private(){},
其中在1和2之间的时间里对象B中的指向A的变量值由null变为A,并且其中有个属性a=1,这个变量就是m
现在到执行结束上面提到的3个变量值均没改变,那么输出结果就比较清楚了
--------------------编程问答--------------------
+++++++++
补充:Java , Java SE