自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

構造器的執(zhí)行順序

開發(fā) 后端
在沒有靜態(tài)塊的情況下,子類的對象創(chuàng)建時,父類的無參構造器-->子類的構造器(產(chǎn)生對象的構造器,如果 是無參則執(zhí)行的是無參構造器,如果執(zhí)行的是有參則執(zhí)行的有參構造器,詳細請看下文

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

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

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

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

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

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

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

我是父類的無參構造器

我是--子類--的無參構造器

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

SonDemo的main方法中加入

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

那么控制臺打印的結果是:

我是父類的無參構造器

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

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

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

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

SonDemo的main方法中加入

我是父類的無參構造器

我是--子類--的無參構造器

我是父類的無參構造器

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

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

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

答,靜態(tài)塊會在構造器之前運行。不管是子類還是父類。創(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("我是父類的無參構造器");  
  11.     }  
  12.        
  13.     public Father(String username){  
  14.         System.out.println("我是父類有參構造器,傳過來的參數(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("我是--子類--的無參構造器");  
  27.     }  
  28.     public SonDemo(String username){  
  29.         System.out.println("我是子類的有參構造器,參數(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.     }  

①程序的結果:

father static 

sonDemo static 

我是父類的無參構造器 

我是--子類--的無參構造器 

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

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

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

打印結果:

father static 

sonDemo static 

我是父類的無參構造器

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

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

原文鏈接:http://www.cnblogs.com/pengqinping/archive/2012/05/14/2498892.html

【編輯推薦】

  1. Java端通過CXF調用.NET端服務
  2. Java線程池的原理及幾類線程池的介紹
  3. Java中的異常對程序效率有無影響
  4. Java簡單的網(wǎng)絡爬蟲實現(xiàn)
  5. Java調用SQL Server的存儲過程詳解
責任編輯:林師授 來源: 彭sir的博客
相關推薦

2012-02-27 14:09:00

Java

2009-07-21 12:35:00

Scala從構造器

2022-01-21 08:50:15

Promise任務隊列前端

2022-01-04 19:33:03

Java構造器調用

2024-10-11 17:13:14

SQL數(shù)據(jù)庫查詢數(shù)據(jù)庫

2009-07-17 17:41:41

SwingWorker

2010-04-16 09:27:18

Ocacle執(zhí)行計劃

2021-07-28 07:22:40

SQL順序Hive

2019-11-06 09:30:35

SQL查詢語句數(shù)據(jù)庫

2009-07-03 16:33:13

Tapestry函數(shù)執(zhí)

2024-11-07 12:37:17

2010-09-03 14:47:50

SQLSELECT語句

2011-05-16 10:35:02

jQuery

2009-11-10 16:00:05

Oracle執(zhí)行計劃

2021-09-26 09:59:14

MYSQL開發(fā)數(shù)據(jù)庫

2022-05-10 08:47:00

JMeter作用域執(zhí)行順序

2010-08-27 13:07:00

CSS規(guī)則

2022-02-16 13:46:40

Spring Aop代碼注解

2019-10-22 08:45:07

Java構造器編程語言

2020-10-16 09:40:18

順序Spring AOPHTTP
點贊
收藏

51CTO技術棧公眾號