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方法結果為:

創建子類繼承該父類測試執行順序。

 1 public class Son extends father{
 2      private String name;
 3 
 4         static{
 5            System.out.println("--子類的靜態代碼塊--");
 6         }
 7 
 8         {
 9            System.out.println("--子類的非靜態代碼塊--");
10         }
11 
12         Son(){
13            System.out.println("--子類的無參構造函數--");
14         }
15 
16         Son(String name){
17            this.name=name;
18            System.out.println("--子類的有參構造函數--"+this.name);
19         }
20 
21         @Override
22         public void speak(){
23            System.out.println("--子類Override了父類的方法--");
24         }    
25         
26         public static void main(String[] args) {
27                System.out.println("--子類主程序--");
28 
29                Son son=new Son("兒子的名字");
30                son.speak();
31         }
32 }

運行如上main方法結果如下:

運行如下main方法:

 1  public static void main(String[] args) {
 2                System.out.println("--子類主程序--");
 3               
 4                Son son=new Son("兒子的名字");
 5                son.speak();
 6                
 7                father father=new father("父親的名字");
 8                father.speak();
 9                
10         }

結果如下:

 

所以:

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

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

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

 


免責聲明!

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



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