日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
構(gòu)造器的執(zhí)行順序

1,在沒有靜態(tài)塊的情況下,子類的對象創(chuàng)建時,父類的無參構(gòu)造器-->子類的構(gòu)造器(產(chǎn)生對象的構(gòu)造器,如果

是無參則執(zhí)行的是無參構(gòu)造器,如果執(zhí)行的是有參則執(zhí)行的有參構(gòu)造器)

現(xiàn)在的父類中只有兩個構(gòu)造器:

 
 
 
  1. Father.java  
  2.  Father {  
  3.     public Father(){  
  4.         System.out.println("我是父類的無參構(gòu)造器");  
  5.     }  
  6.        
  7.     public Father(String username){  
  8.         System.out.println("我是父類有參構(gòu)造器,傳過來的參數(shù)是+"+username);  
  9.     }  
  10. public class SonDemo extends Father{  
  11.    
  12.     public SonDemo(){  
  13.         System.out.println("我是--子類--的無參構(gòu)造器");  
  14.     }  
  15.     public SonDemo(String username){  
  16.         System.out.println("我是子類的有參構(gòu)造器,參數(shù)是"+username);  
  17.     }  
  18.        
  19.     public void sys(){  
  20.         System.out.println("我是子類的sys方法");  
  21.     }  
  22.        
  23.     public static void main(String[] args) {  
  24.         //里面的內(nèi)容在下面有說明  
  25.     }  
  26.        
  27.        
  28.        

①,子類使用無參構(gòu)造器創(chuàng)建對象:

在SonDemo 的main方法中加入創(chuàng)建對象的代碼:

 
 
 
  1. SonDemo son = new SonDemo();  
  2.        

我是父類的無參構(gòu)造器

我是--子類--的無參構(gòu)造器

②,子類使用有參構(gòu)造器創(chuàng)建對象:

SonDemo的main方法中加入

 
 
 
  1. SonDemo son = new SonDemo("than you ma"); 

那么控制臺打印的結(jié)果是:

我是父類的無參構(gòu)造器

我是子類的有參構(gòu)造器,參數(shù)是than you ma

也就是說在子類調(diào)用無參構(gòu)造器創(chuàng)建對象的時候,在執(zhí)行它自己的有參構(gòu)造器之前首先執(zhí)行父類的無參構(gòu)造器。

③,在子類中創(chuàng)建父類的對象,使用無參,

 
 
 
  1. SonDemo son = new SonDemo("than you ma");  
  2. Father ff = new Father(); 

SonDemo的main方法中加入

我是父類的無參構(gòu)造器

我是--子類--的無參構(gòu)造器

我是父類的無參構(gòu)造器

調(diào)用了父類的無參構(gòu)造器,有參的創(chuàng)建對象調(diào)用的是有參構(gòu)造器。

總結(jié):在創(chuàng)建子類對象的時候,首先會調(diào)用父類的構(gòu)造器,讓后在調(diào)用子類相應(yīng)的構(gòu)造器創(chuàng)建對象,在子類創(chuàng)建父類對象時,就是直接調(diào)用父類自己相應(yīng)的構(gòu)造器。

2.如果在子類和父類中存在靜態(tài)塊;執(zhí)行順序有會是怎么樣的了?

答,靜態(tài)塊會在構(gòu)造器之前運行。不管是子類還是父類。創(chuàng)建一個對象的時候,會首先加載它的靜態(tài)塊。

 
 
 
  1. Father.java  
  2. public class Father {  
  3.    
  4.     //靜態(tài)塊  
  5.     static{  
  6.         System.out.println("father  static ");  
  7.     }  
  8.        
  9.     public Father(){  
  10.         System.out.println("我是父類的無參構(gòu)造器");  
  11.     }  
  12.        
  13.     public Father(String username){  
  14.         System.out.println("我是父類有參構(gòu)造器,傳過來的參數(shù)是+"+username);  
  15.     }  
  16. }  
  17.    
  18. SonDemo.java  
  19. public class SonDemo extends Father{  
  20.     //靜態(tài)塊  
  21.     static{  
  22.         System.out.println("sonDemo static ");  
  23.     }  
  24.        
  25.     public SonDemo(){  
  26.         System.out.println("我是--子類--的無參構(gòu)造器");  
  27.     }  
  28.     public SonDemo(String username){  
  29.         System.out.println("我是子類的有參構(gòu)造器,參數(shù)是"+username);  
  30.     }  
  31.        
  32.     public void sys(){  
  33.         System.out.println("我是子類的sys方法");  
  34.     }  
  35.        
  36.     public static void main(String[] args) {  
  37.         SonDemo son = new SonDemo();  
  38.     }  

①程序的結(jié)果:

father static 

sonDemo static 

我是父類的無參構(gòu)造器 

我是--子類--的無參構(gòu)造器 

因為在創(chuàng)建子類對象之前:會創(chuàng)建父類的一個對象,而靜態(tài)塊會在main之前被加載,所以兩個類的靜態(tài)塊首先執(zhí)行。

然后執(zhí)行構(gòu)造器。

②,如果在子類中的main中只創(chuàng)建父類的對象結(jié)果是怎么樣的呢?

打印結(jié)果:

father static 

sonDemo static 

我是父類的無參構(gòu)造器

為什么子類的靜態(tài)塊會被加載了?是因為我們是在SonDemo中測試,如果在其他類中測試就不會打印。

總結(jié):我們說了這么多就是重要的一點。靜態(tài)塊會在構(gòu)造器器之前執(zhí)行。


文章標(biāo)題:構(gòu)造器的執(zhí)行順序
本文鏈接:http://www.dlmjj.cn/article/djijdhd.html