非静态内部类(实例内部类)
没有使用static修饰的内部类,此时该内部类属于外部类的实例,不属于外部类
若外部类字段、和内部类字段、内部类方法里面的变量,名称相同,则其访问方式分别是:
1:访问外部类字段:外部类类名.this.字段
2:访问内部类字段:this.字段
3:访问内部类方法的局部变量:字段
注意!非静态内部类不能使用private修饰,而且访问方式是:
OuterClass.InnerClass varName = OuterInstance.new InnerClass([参数列表]);
示例代码
class SuperClass {
String name = "外部变量";
class Inner{
String name = "内部变量";
void speak(){
String name = "局部变量";
System.out.println(SuperClass.this.name);
System.out.println(this.name);
System.out.println(name);
}
}
}
public class OuterClass {
public static void main(String[] args)
{
SuperClass sp = new SuperClass();
SuperClass.Inner in = sp.new Inner();
in.speak();
}
}