成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

嬰兒的出生為你解惑構造函數和構造代碼塊

開發 前端
構造代碼塊和構造函數之間是有一定的聯系的,為了捕捉這種聯系關系,我總結了一個案例,這個案例能加深你對構造函數和構造代碼塊的理解。

[[377705]]

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

前言:

構造代碼塊和構造函數之間是有一定的聯系的,為了捕捉這種聯系關系,我總結了一個案例,這個案例能加深你對構造函數和構造代碼塊的理解。

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

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

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

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

  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.         //創建一個baby對象 
  11.         Baby baby = new Baby();//嬰兒出生 
  12.         baby.id=111; 
  13.         baby.name="小娃娃";//黑戶 
  14.         baby.cry(); 
  15.     } 
  16. ??  

運行結果:

小娃娃哇哇的哭。。。。

由于小娃娃是出生之后才賦的值,所以小娃娃是黑戶,我們現在要讓嬰兒一出生就有名字,就要用構造函數。

構造函數的作用: 給對應的對象進行初始化

構造函數定義的格式:

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

構造函數要注意的細節:

1.構造函數沒有返回值類型

2.構造函數的函數名必須要與類名一致

3.構造函數并不是由我們手動調用的,而是在創建對應的對象時,jvm就會主動調用到對應的構造函數

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

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

6.構造函數是可以在一個類中以函數重載的形式存在多個的

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

運行結果:

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

小可愛哇哇的哭。。。。

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

  1. //嬰兒類 
  2. public class Baby { 
  3.     int id;//身份證 
  4.     String name;//名字 
  5.     //無參構造函數 
  6.     public  Baby(){ 
  7.         cry(); 
  8.     } 
  9.     //有參構造函數 
  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.         //創建一個白戶baby對象 
  22.         Baby baby = new Baby(222,"小可愛");//白戶 
  23.         //創建一個黑戶baby對象 
  24.         Baby baby1 = new Baby();//黑戶 
  25.     } 
  26. ?? 

運行結果:

哇哇的哭。。。。

哇哇的哭。。。。

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

構造函數的作用:給對應的對象進行初始化

構造代碼塊的作用: 給對象進行統一的初始化

構造代碼塊的格式:

  1.     構造代碼塊 

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

代碼塊的類別:

1.構造代碼塊

2.局部代碼塊

大括號位于方法之內

作用:縮短局部變量的生命周期,節省一點點內存。

3.靜態代碼塊

  1.      靜態代碼塊 

構造代碼塊要注意的事項:

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

2.成員變量的初始化工作其實都是在構造函數中進行的

3.一旦經過Java編譯器編譯后,構造代碼塊的代碼就會被移動到構造函數中執行,是在構造函數之前執行的,構造函數中的代碼是最后執行的

4.成員變量的顯式初始化與構造代碼塊的代碼是按照當前代碼的順序執行的

  1. //嬰兒類 
  2. public class Baby { 
  3.     int id;//身份證 
  4.     String name;//名字 
  5.     //構造代碼塊 
  6.     { 
  7.         cry(); 
  8.     } 
  9.     //無參構造函數 
  10.     public  Baby(){ 
  11.     } 
  12.     //有參構造函數 
  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.         //創建一個白戶baby對象 
  24.         Baby baby = new Baby(222,"小可愛");//白戶 
  25.         //創建一個黑戶baby對象 
  26.         Baby baby1 = new Baby();//黑戶 
  27.         //匿名對象 
  28.         new Baby(); 
  29.     } 
  30. }?? 

運行結果:

哇哇的哭。。。。

哇哇的哭。。。。

哇哇的哭。。。。

  1. //嬰兒類 
  2. public class Baby { 
  3.     int id;//身份證 
  4.     String name;//名字 
  5.     //構造代碼塊 
  6.     { 
  7.         cry(); 
  8.     } 
  9.     //無參構造函數 
  10.     public  Baby(){ 
  11.     } 
  12.     //有參構造函數 
  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.             //創建一個白戶baby對象 
  26.             Baby baby = new Baby(222,"小可愛");//白戶 
  27.             //創建一個黑戶baby對象 
  28.             Baby baby1 = new Baby();//黑戶 
  29.             //匿名對象 
  30.             new Baby(); 
  31.         } 
  32.     } 

 【編輯推薦】

 

責任編輯:武曉燕 來源: 見賢思編程
相關推薦

2025-02-06 13:23:09

C++函數參數

2010-01-26 09:52:05

Android構造塊

2010-07-20 09:52:27

Perl構造函數

2009-11-02 09:43:01

VB.NET構造函數

2009-08-14 17:24:28

C#構造函數和析構函數

2021-12-09 10:56:50

函數C++原型

2009-11-16 16:59:03

PHP構造函數

2009-12-11 10:42:00

Scala講座類定義構造函數

2010-07-09 14:14:25

UML組成

2010-06-08 17:42:50

UML構造塊

2009-09-03 13:14:55

C#構造函數C#析構函數

2009-07-31 16:06:50

成員函數構造函數C#

2024-04-11 08:58:59

Python構造函數對象編程

2009-07-21 12:35:00

Scala從構造器

2021-12-10 10:45:36

C++函數Stock

2009-07-31 14:15:38

C# 構造函數

2009-08-24 18:09:13

C#構造函數

2010-07-16 16:56:01

Perl構造函數

2009-07-30 15:24:13

C#析構函數C#構造函數

2009-10-19 14:25:16

靜態構造函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色综合天天综合网国产成人网 | 99精品一区二区三区 | 国产精品乱码一区二三区小蝌蚪 | 欧美视频 亚洲视频 | 黄视频网站免费观看 | 久久蜜桃av一区二区天堂 | 91久久精品国产 | 999精彩视频| 国产在视频一区二区三区吞精 | 99这里只有精品视频 | 成年人在线电影 | 欧美色综合天天久久综合精品 | 亚洲成av人片在线观看 | 91国自产| 91视频三区 | 在线婷婷| 免费午夜视频 | 人人精品| 日韩精品一区二区三区 | 国产久 | 操操操av | 亚洲视频中文字幕 | 亚洲不卡在线观看 | 久久精品欧美一区二区三区麻豆 | 国产欧美精品一区二区三区 | 日韩一区二区在线观看 | 国产视频精品在线 | 亚洲丝袜天堂 | 国产精品成人一区二区三区 | 亚洲高清视频一区 | 国产精品美女久久久久久久久久久 | 欧美一区中文字幕 | 欧美日韩综合视频 | 欧洲亚洲一区 | 婷婷综合网 | 日韩成人精品一区二区三区 | av在线成人 | 国产精品99视频 | 欧美日韩精品在线免费观看 | 天天综合网天天综合 | 久久一 |