变量重名
变量的使用规则:就近原则
第一种情况:局部变量和成员变量重名,使用this关键字
访问成员变量
第二种情况:子类成员变量和父类成员变量重名,使用super关键字
访问父类成员变量
// 父类
public class Fu {
int num = 10;
}
// 子类
public class Zi extends Fu {
int num = 20;
public void method() {
int num = 30;
System.out.println(num); // 30
System.out.println(this.num); // 20
System.out.println(super.num); // 10
}
}
第三种情况:内部类成员和外部类成员重名,使用外部类名.this.外部类成员名
访问外部类成员
!! 静态内部类只能访问外部类的静态成员
-
外部类实例成员:外部类名.this.外部类成员名
-
外部类静态成员:外部类名.外部类成员名,推荐
public class Outer { // 外部类
// private 保护数据的安全性
// static 让数据访问更加方便
private static int num = 10;
public class Inner /*extends Object*/ { // 内部类
private int num = 20;
public void method() {
int num = 30;
System.out.println(num); // 30
System.out.println(this.num); // 20
System.out.println(Outer.num); // 10
System.out.println(Outer.this.num); // 10
}
}
}