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

嬰兒的出生為你解惑構(gòu)造函數(shù)和構(gòu)造代碼塊

開發(fā) 前端
構(gòu)造代碼塊和構(gòu)造函數(shù)之間是有一定的聯(lián)系的,為了捕捉這種聯(lián)系關(guān)系,我總結(jié)了一個案例,這個案例能加深你對構(gòu)造函數(shù)和構(gòu)造代碼塊的理解。

[[377705]]

本文轉(zhuǎn)載自微信公眾號「見賢思編程」,作者泰斗賢若如 。轉(zhuǎn)載本文請聯(lián)系見賢思編程公眾號。 

前言:

構(gòu)造代碼塊和構(gòu)造函數(shù)之間是有一定的聯(lián)系的,為了捕捉這種聯(lián)系關(guān)系,我總結(jié)了一個案例,這個案例能加深你對構(gòu)造函數(shù)和構(gòu)造代碼塊的理解。

我寫這篇文章為了能給需要解惑的人提供一些幫助,還是那句話:

越懂得與人分享,你的價值增值越大!

看代碼前要先明白一個需求:

使用Java類描述一個嬰兒,假設(shè)現(xiàn)在兩種嬰兒,一種嬰兒是一出生就有了名字,我們把這種嬰兒叫白戶,另一種嬰兒是出生后才有了名字,我們把這種嬰兒叫黑戶。(為了方便理解,我把剛出生就已經(jīng)有名字的叫白戶,把出生后才起名的叫黑戶)

  1. //嬰兒類public class Baby { 
  2.     int id;//身份證 
  3.     String name;//名字 
  4.     //哭 
  5.     public void cry(){ 
  6.         System.out.println(name+"哇哇的哭。。。。"); 
  7.     } 
  8. class Test{ 
  9.     public static void main(String[] args) { 
  10.         //創(chuàng)建一個baby對象 
  11.         Baby baby = new Baby();//嬰兒出生 
  12.         baby.id=111; 
  13.         baby.name="小娃娃";//黑戶 
  14.         baby.cry(); 
  15.     } 
  16. ??  

運行結(jié)果:

小娃娃哇哇的哭。。。。

由于小娃娃是出生之后才賦的值,所以小娃娃是黑戶,我們現(xiàn)在要讓嬰兒一出生就有名字,就要用構(gòu)造函數(shù)。

構(gòu)造函數(shù)的作用: 給對應(yīng)的對象進行初始化

構(gòu)造函數(shù)定義的格式:

  1. 修飾符 函數(shù)名(形式參數(shù)){  
  2.      函數(shù)體。。。  

構(gòu)造函數(shù)要注意的細節(jié):

1.構(gòu)造函數(shù)沒有返回值類型

2.構(gòu)造函數(shù)的函數(shù)名必須要與類名一致

3.構(gòu)造函數(shù)并不是由我們手動調(diào)用的,而是在創(chuàng)建對應(yīng)的對象時,jvm就會主動調(diào)用到對應(yīng)的構(gòu)造函數(shù)

4.如果一個類沒有顯式的寫上一個構(gòu)造方法時,Java編譯器會為該類添加一個無參的構(gòu)造方法

5.如果一個類已經(jīng)顯示的寫上一個構(gòu)造方法時,Java編譯器不會再為該類添加無參的構(gòu)造方法

6.構(gòu)造函數(shù)是可以在一個類中以函數(shù)重載的形式存在多個的

  1. //嬰兒類 
  2. public class Baby { 
  3.     int id;//身份證 
  4.     String name;//名字 
  5.     //無參構(gòu)造函數(shù) 
  6.     public  Baby(){ 
  7.     } 
  8.     //有參構(gòu)造函數(shù) 
  9.     public Baby(int id, String name) { 
  10.         this.id = id; 
  11.         this.name = name
  12.         System.out.println("Baby的屬性初始化完畢!?。?quot;); 
  13.     } 
  14.     //哭 
  15.     public void cry(){ 
  16.         System.out.println(this.name+"哇哇的哭。。。。"); 
  17.     } 
  18. class Test{ 
  19.     public static void main(String[] args) { 
  20.         //創(chuàng)建一個baby對象 
  21.         Baby baby = new Baby(222,"小可愛");//嬰兒出生    白戶 
  22.         baby.cry(); 
  23.     } 
  24.  

運行結(jié)果:

Baby的屬性初始化完畢!!!

小可愛哇哇的哭。。。。

通過上面的黑戶和白戶,我們能對構(gòu)造函數(shù)有個深刻的理解,下面我再引申出構(gòu)造代碼塊,依舊是這個例子,但是需求變了,現(xiàn)在的需求是嬰兒一出生就必須哭,可能說到這,要是有人理解了上面的代碼,肯定馬上就能想到,這還不簡單,把哭的方法寫到構(gòu)造函數(shù)中不就行了,對,這樣確實也可以,但是有弊端,Java要求代碼簡練,能少寫的就不多寫,你先看下面的代碼就知道了。

  1. //嬰兒類 
  2. public class Baby { 
  3.     int id;//身份證 
  4.     String name;//名字 
  5.     //無參構(gòu)造函數(shù) 
  6.     public  Baby(){ 
  7.         cry(); 
  8.     } 
  9.     //有參構(gòu)造函數(shù) 
  10.     public Baby(int id, String name) { 
  11.         this.id = id; 
  12.         this.name = name
  13.         cry(); 
  14.     } 
  15.     //哭 
  16.     public void cry(){ 
  17.         System.out.println("哇哇的哭。。。。"); 
  18.     } 
  19. class Test{ 
  20.     public static void main(String[] args) { 
  21.         //創(chuàng)建一個白戶baby對象 
  22.         Baby baby = new Baby(222,"小可愛");//白戶 
  23.         //創(chuàng)建一個黑戶baby對象 
  24.         Baby baby1 = new Baby();//黑戶 
  25.     } 
  26. ?? 

運行結(jié)果:

哇哇的哭。。。。

哇哇的哭。。。。

雖然白戶黑戶兩種嬰兒都在出生的時候哭了,但是在兩個構(gòu)造函數(shù)中出現(xiàn)了重復代碼,cry() 方法重復了兩次,為了解決重復代碼這個問題,下面就讓構(gòu)造代碼塊出場吧!

構(gòu)造函數(shù)的作用:給對應(yīng)的對象進行初始化

構(gòu)造代碼塊的作用: 給對象進行統(tǒng)一的初始化

構(gòu)造代碼塊的格式:

  1.     構(gòu)造代碼塊 

注意:構(gòu)造代碼塊的大括號必須位于成員位置上

代碼塊的類別:

1.構(gòu)造代碼塊

2.局部代碼塊

大括號位于方法之內(nèi)

作用:縮短局部變量的生命周期,節(jié)省一點點內(nèi)存。

3.靜態(tài)代碼塊

  1.      靜態(tài)代碼塊 

構(gòu)造代碼塊要注意的事項:

1.Java編譯器編譯一個Java源文件的時候,會把成員變量的聲明語句提前至一個類的最前端

2.成員變量的初始化工作其實都是在構(gòu)造函數(shù)中進行的

3.一旦經(jīng)過Java編譯器編譯后,構(gòu)造代碼塊的代碼就會被移動到構(gòu)造函數(shù)中執(zhí)行,是在構(gòu)造函數(shù)之前執(zhí)行的,構(gòu)造函數(shù)中的代碼是最后執(zhí)行的

4.成員變量的顯式初始化與構(gòu)造代碼塊的代碼是按照當前代碼的順序執(zhí)行的

  1. //嬰兒類 
  2. public class Baby { 
  3.     int id;//身份證 
  4.     String name;//名字 
  5.     //構(gòu)造代碼塊 
  6.     { 
  7.         cry(); 
  8.     } 
  9.     //無參構(gòu)造函數(shù) 
  10.     public  Baby(){ 
  11.     } 
  12.     //有參構(gòu)造函數(shù) 
  13.     public Baby(int id, String name) { 
  14.         this.id = id; 
  15.         this.name = name
  16.     } 
  17.     //哭 
  18.     public void cry(){ 
  19.         System.out.println("哇哇的哭。。。。"); 
  20.     } 
  21. class Test{ 
  22.     public static void main(String[] args) { 
  23.         //創(chuàng)建一個白戶baby對象 
  24.         Baby baby = new Baby(222,"小可愛");//白戶 
  25.         //創(chuàng)建一個黑戶baby對象 
  26.         Baby baby1 = new Baby();//黑戶 
  27.         //匿名對象 
  28.         new Baby(); 
  29.     } 
  30. }?? 

運行結(jié)果:

哇哇的哭。。。。

哇哇的哭。。。。

哇哇的哭。。。。

  1. //嬰兒類 
  2. public class Baby { 
  3.     int id;//身份證 
  4.     String name;//名字 
  5.     //構(gòu)造代碼塊 
  6.     { 
  7.         cry(); 
  8.     } 
  9.     //無參構(gòu)造函數(shù) 
  10.     public  Baby(){ 
  11.     } 
  12.     //有參構(gòu)造函數(shù) 
  13.     public Baby(int id, String name) { 
  14.         this.id = id; 
  15.         this.name = name
  16.     } 
  17.     //哭 
  18.     public void cry(){ 
  19.         System.out.println("哇哇的哭。。。。"); 
  20.     } 
  21. class Test{ 
  22.     public static void main(String[] args) { 
  23.         //局部代碼塊 
  24.         { 
  25.             //創(chuàng)建一個白戶baby對象 
  26.             Baby baby = new Baby(222,"小可愛");//白戶 
  27.             //創(chuàng)建一個黑戶baby對象 
  28.             Baby baby1 = new Baby();//黑戶 
  29.             //匿名對象 
  30.             new Baby(); 
  31.         } 
  32.     } 

 【編輯推薦】

 

責任編輯:武曉燕 來源: 見賢思編程
相關(guān)推薦

2025-02-06 13:23:09

C++函數(shù)參數(shù)

2010-01-26 09:52:05

Android構(gòu)造塊

2010-07-20 09:52:27

Perl構(gòu)造函數(shù)

2009-11-02 09:43:01

VB.NET構(gòu)造函數(shù)

2009-08-14 17:24:28

C#構(gòu)造函數(shù)和析構(gòu)函數(shù)

2021-12-09 10:56:50

函數(shù)C++原型

2009-11-16 16:59:03

PHP構(gòu)造函數(shù)

2009-12-11 10:42:00

Scala講座類定義構(gòu)造函數(shù)

2010-06-08 17:42:50

UML構(gòu)造塊

2010-07-09 14:14:25

UML組成

2009-07-31 16:06:50

成員函數(shù)構(gòu)造函數(shù)C#

2009-09-03 13:14:55

C#構(gòu)造函數(shù)C#析構(gòu)函數(shù)

2024-04-11 08:58:59

Python構(gòu)造函數(shù)對象編程

2021-12-10 10:45:36

C++函數(shù)Stock

2009-07-31 14:15:38

C# 構(gòu)造函數(shù)

2009-08-24 18:09:13

C#構(gòu)造函數(shù)

2010-07-16 16:56:01

Perl構(gòu)造函數(shù)

2009-07-21 12:35:00

Scala從構(gòu)造器

2009-07-30 15:24:13

C#析構(gòu)函數(shù)C#構(gòu)造函數(shù)

2024-12-31 00:07:12

點贊
收藏

51CTO技術(shù)棧公眾號