23.Java-非静态内部类(实例内部类)

非静态内部类(实例内部类)

没有使用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();
    }
    
}

你可能感兴趣的:(23.Java-非静态内部类(实例内部类))