Java中的局部內部類


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM