1. 程式人生 > >JAVA 中 靜態方法,非靜態方法,構造方法 ,執行順序

JAVA 中 靜態方法,非靜態方法,構造方法 ,執行順序

一直不能理解java 中這三者的執行順序。
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        B b = new B();
    }

static class A{

        static{
            System.out.println("父類靜態方法") ;
        }

        {
           System.out.println("父類非靜態方法") ; 

        }

        public A(){
           System.out.println("父類構造");  

        }

    }


    static class B extends A{

        static{
           System.out.println("子類靜態方法") ;
        }

        {
           System.out.println("子類非靜態方法") ; 

        }

        public B(){
            System.out.println("子類構造"); 
        }

    }

輸出的結果是:

父類靜態方法

子類靜態方法

父類非靜態方法

父類構造

子類非靜態方法

子類構造

 ====================================

靜態變數只執行一次,與類同時建立,首先是執行static 修飾的方法,接著是非靜態方法,構造方法。(子類的非靜態方法在父類的構造方法之後執行)