1. 程式人生 > >內部類之靜態內部類

內部類之靜態內部類

println pre [] ont rgs 結構 style 進步 align

一、位置

  被定義在一個類下,且被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); } }

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

內部類之靜態內部類