publicclassOuter{privatestaticint sa =5;privateint ia =10;staticclassStaticInner{publicvoidshow(){//静态内部类可以访问嵌套它的外部类的静态成员
System.out.println("Outer's sa = "+ sa);//Error。静态内部类不能访问嵌套它的外部类的实例成员//System.out.println("Outer's ia = " + ia);}}publicstaticvoidmain(String[] args){
Outer.StaticInner inner =newOuter.StaticInner();
inner.show();}}
4、实例内部类访问嵌套它的外部类的成员
publicclassOuter{privatestaticint sa =5;privateint ia =10;classMemberInner{publicvoidshow(){
System.out.println("Outer's sa = "+ sa);
System.out.println("Outer's ia = "+ ia);}}publicstaticvoidmain(String[] args){
Outer outer =newOuter();
Outer.MemberInner inner = outer.newMemberInner();
inner.show();}}
5、内部类跟嵌套它的外部类属性重名时的访问方法
publicclassOuter{privatestaticint sa =1;privateint ia =2;staticclassStaticInner{privatestaticint sa =10;privateint ia =20;publicvoidshow(){
System.out.println("From StaticInner: Outer's sa = "+ Outer.sa);
System.out.println("From StaticInner: StaticInner's ia = "+ ia);}}classMemberInner{//Error。实例内部类中不能有非常量的静态属性//private static int ta = 1000;privatestaticfinalint ta =100;privateint ia =200;//Error。实例内部类中也不能有静态的方法/*public static void nothing() {
}*/publicvoidshow(){
System.out.println("From MemberInner: Outer's sa = "+ Outer.sa);
System.out.println("From MemberInner: Outer's ia = "+ Outer.this.ia);
System.out.println("From MemberInner: MemberInner's sa = "+ MemberInner.ta);
System.out.println("From MemberInner: MemberInner's ia = "+this.ia);}}publicstaticvoidmain(String[] args){
Outer.StaticInner si =newOuter.StaticInner();
si.show();
Outer.MemberInner mi =newOuter().newMemberInner();
mi.show();}}