public class Outer {
class Inner {
private int i=0;
private Inner() {
this.i=1;
}
}
public Inner getInner() {
return new Inner();
}
public static void main(String[] args) {
//编译不通过,i访问不了
Outer1 outer1 = new Outer1();
Outer1.Inner1 inner1 = outer1.getInner();
System.out.println(inner1.i);
//编译通过,i可以访问
Outer outer = new Outer();
Outer.Inner inner = outer.getInner();
System.out.println(inner.i);
}
}
class Outer1 {
class Inner1 {
private int i=0;
private Inner1() {
this.i=1;
}
}
public Inner1 getInner() {
return new Inner1();
}
class Inner {
private int i=0;
private Inner() {
this.i=1;
}
}
public Inner getInner() {
return new Inner();
}
public static void main(String[] args) {
//编译不通过,i访问不了
Outer1 outer1 = new Outer1();
Outer1.Inner1 inner1 = outer1.getInner();
System.out.println(inner1.i);
//编译通过,i可以访问
Outer outer = new Outer();
Outer.Inner inner = outer.getInner();
System.out.println(inner.i);
}
}
class Outer1 {
class Inner1 {
private int i=0;
private Inner1() {
this.i=1;
}
}
public Inner1 getInner() {
return new Inner1();
}
}
这说明了,若在主函数中访问所在类的内部类,则访问内部类的私有变量。若在主函数中访问其他类的内部类,则无法访问到内部类的私有变量。