java内部类

成员内部类

public class User {
   private int age=12;
    // 成员内部类
   class In {
       public void print() {
           System.out.println(age);
       }
   }
}

public class Test {

 public static void main(String[] args) {
    User u=new User();
   
  User.In i=u.new In();
  i.print();
 }

}

变量访问

public class User {
   private int age=12;
    // 成员内部类
   class In {
    private int age = 13;
       public void print() {
        int age = 14;
           System.out.println("局部变量:" + age);
           System.out.println("内部类变量:" + this.age);
           System.out.println("外部类变量:" + User.this.age);
       }
   }
}

静态内部类

class Out {

    private static int age = 12;
     
    static class In {
        public void print() {
            System.out.println(age);
        }
    }
}
 
public class Demo {
    public static void main(String[] args) {
        Out.In in = new Out.In();
        in.print();
    }
}

方法内部类

class Out {

    private int age = 12;
 
    public void Print(final int x) {
        class In {
            public void inPrint() {
                System.out.println(x);
                System.out.println(age);
            }
        }
        new In().inPrint();
    }
}
 
public class Demo {
    public static void main(String[] args) {
        Out out = new Out();
        out.Print(3);
    }
}

在上面的代码中,我们将内部类移到了外部类的方法中,然后在外部类的方法中再生成一个内部类对象去调用内部类方法

如果此时我们需要往外部类的方法中传入参数,那么外部类的方法形参必须使用final定义

至于final在这里并没有特殊含义,只是一种表示形式而已

原文地址:https://www.cnblogs.com/zxf330301/p/5358425.html