Java中子類和父類相關方法的執行順序(一)

java new一個類對象,類中各部分執行順序:
  靜態代碼塊—非靜態代碼塊—構造函數—一般方法。

public class father {
    
    private String name;

    father(){
       System.out.println("--父類的無參構造函數--");
    }

    father(String name){
       this.name=name;
       System.out.println("--父類的有參構造函數--"+this.name);
    }

    static{
       System.out.println("--父類的靜態代碼塊--");
    }

    {
       System.out.println("--父類的非靜態代碼塊--");
    }

    public void speak(){
       System.out.println("--父類的方法--");
    }

    public static void main(String[] args) {
        System.out.println("--父類主程序--");
        father father=new father("父親的名字");
        father.speak();
     }
    
}

運行如上main方法結果爲:
在這裏插入圖片描述
創建子類繼承該父類測試執行順序。

public class Son extends father{
     private String name;

        static{
           System.out.println("--子類的靜態代碼塊--");
        }

        {
           System.out.println("--子類的非靜態代碼塊--");
        }

        Son(){
           System.out.println("--子類的無參構造函數--");
        }

        Son(String name){
           this.name=name;
           System.out.println("--子類的有參構造函數--"+this.name);
        }

        @Override
        public void speak(){
           System.out.println("--子類Override了父類的方法--");
        }    
        
        public static void main(String[] args) {
               System.out.println("--子類主程序--");

               Son son=new Son("兒子的名字");
               son.speak();
        }
}

運行如上main方法結果如下:
在這裏插入圖片描述
運行如下main方法:

public static void main(String[] args) {
               System.out.println("--子類主程序--");
              
               Son son=new Son("兒子的名字");
               son.speak();
               
               father father=new father("父親的名字");
               father.speak();
               
        }

結果如下:
在這裏插入圖片描述
所以:

new一個類對象,類中各部分執行順序:靜態代碼塊—非靜態代碼塊—構造函數—一般方法。

子類繼承父類各部分執行順序爲:父靜態代碼塊–子靜態代碼塊–父非靜態代碼–父無參構造函數–子靜態代碼塊–子構造函數–方法。

注意:創建子類對象調用子類的構造方法的時候會先調用父類的構造方法,在子類的構造方法中調用父類的構造方法是用super(),如果沒有寫super(),則默認調用父類的無參構造方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章