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(); } }