package Smoke; public class Inner { private int num = 3; class Limian{ public void show(){ //内部类可以访问外部类的私有变量 System.out.println(num); } } //局部内部类 public void method(){ int num2 = 44; class JuIn{ public void zhanshi(){ /* * 按理说局部内部类访问局部变量,局部变量应该用final修饰,但是不用final修饰也是可以访问的, * 这是因为在JDK8以下必须用final修饰,不然会报错, * Cannot refer to a non-final variable a inside an inner class defined in a different method, * 但是在JDK8之后就不会出现这种状况 * */ System.out.print(num2); } } System.out.println("访问局部变量"+num2); //在局部创建内部类对象 JuIn ji = new JuIn(); ji.zhanshi(); } } class StaticTest{ private static int num1 = 4; //内部类用静态变量修饰 public static class Test{ public static void show(){ //静态内部类访问外部变量必须用static修饰 System.out.println(num1); } } } class InnerDemo{ public static void main (String[] args){ //非静态内部类创建方法 Inner.Limian l = new Inner().new Limian(); l.show(); //静态内部类创建方式 StaticTest.Test t = new StaticTest.Test(); //调用方法一 t.show(); //调用方法二 StaticTest.Test.show(); //局部内部类的方法调用 Inner i = new Inner(); i.method(); } }