內部類之靜態內部類


一、位置

  被定義在一個類下,且被static修飾

二、結構

  靜態內部類下可以定義靜態和非靜態的屬性和方法

三、靜態內部類訪問外部類

  1.不能訪問外部類非靜態的屬性和方法

  2.調用屬性【方法】方式:

    2.1直接寫屬性名【調用方法名】-------本質還是第二種

              2.1外部類.屬性名【方法名】

源碼:

class Outter {
     private static int b =3;
     
     public static void test(){
         System.out.println("外部類靜態方法");
     }
     static class Inner{
        public void get(){
            System.out.println(b);//可以訪問外部靜態屬性
            test();//可以訪問外部類靜態方法
        }
    }
}

反編譯源碼:

class Outter
{
    private static int b;
    
    public static void test() {
        System.out.println("\u5916\u90e8\u7c7b\u9759\u6001\u65b9\u6cd5");
    }
    
    static {
        Outter.b = 3;
    }
    
    static class Inner
    {
        public void get() {
            System.out.println(Outter.b);
            Outter.test();
        }
    }
}

四、外部類訪問靜態內部類

class Outter {
     private static int b =3;
     
     public static void test(){
         System.out.println("外部類靜態方法");
     }
     static class Inner{
         private int a = 1;
         
         private static int b = 2;
        
         public void get(){
            System.out.println("get");
        }
         
         public static void get2(){
             System.out.println("get2");
         }
        
    }
     
     public static void main(String[] args) {
        //靜態變量-方法  --方式一
        System.out.println(Inner.b);
        Inner.get2();
        //靜態變量-方法  --方式二
        System.out.println(Outter.Inner.b);
        Outter.Inner.get2();
        //非靜態--方式1
        System.out.println(new Inner().a);
        new Inner().get();
        //非靜態--方式2
        System.out.println(new Outter.Inner().a);
    }
}

以上是對靜態內部類的總結,有不對的地方請大家多多指點,大家共同進步!!!


免責聲明!

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



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