如果这三处的变量名不同,则直接输出即可
public class OuterClass {
int OutNum = 10;// 外部类的成员变量
public class InnerClass {
int InnerNum = 20;// 内部类的成员变量
public void InnerMethod() {
int InnerLocalNum = 30;// 内部类的方法的局部变量
System.out.println(InnerLocalNum);
System.out.println(OutNum);
System.out.println(InnerNum);
}
}
// 下面为 main方法的文件
public class DemoNum {
public static void main(String[] args) {
OuterClass.InnerClass innerClass=new OuterClass().new InnerClass();
innerClass.InnerMethod();
}
}
//30
//10
//20
但同名的时候,访问内部类成员变量用【this.变量名】,访问外部类成员变量用【外部类名称.this.变量名】
public class OuterClass {
int num = 10;// 外部类的成员变量
public class InnerClass {
int num = 20;// 内部类的成员变量
public void InnerMethod() {
int num = 30;// 内部类的方法的局部变量
System.out.println(num);
System.out.println(OuterClass.this.num);
System.out.println(this.num);
}
}
}
/*
测试 main方法与上同,故省略;结果为:
30
10
20
*/