乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       長沙7喜 2019-07-02

      腳本之家

      你與百萬開發(fā)者在一起

      序言:         

      今天回想這幾天走過的Java路程,發(fā)現(xiàn)漏了一個(gè)點(diǎn),就是構(gòu)造代碼塊,我絞盡腦汁,也沒想起來它的作用,我騙不了我自己,就搜相關(guān)資料,重新學(xué)習(xí),在學(xué)習(xí)的過程中發(fā)現(xiàn)構(gòu)造代碼塊和構(gòu)造函數(shù)有一定的聯(lián)系,為了捕捉這種聯(lián)系,我總結(jié)了一個(gè)案例,這個(gè)案例能加深你對(duì)構(gòu)造函數(shù)和構(gòu)造代碼塊的理解。我寫這個(gè)博客一是為了避免下次再被構(gòu)造代碼塊這塊石頭絆倒,二是為了能給需要解惑的人提供一些幫助,還是那句話:

      越懂得與人分享,你的價(jià)值增值越大!

      看代碼前要先明白一個(gè)需求:

      使用Java類描述一個(gè)嬰兒,假設(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. }

      9. class Test{

      10.     public static void main(String[] args) {

      11.         //創(chuàng)建一個(gè)baby對(duì)象

      12.         Baby baby = new Baby();//嬰兒出生

      13.         baby.id=111;

      14.         baby.name='小娃娃';//黑戶

      15.         baby.cry();

      16.     }

      17. }

      運(yùn)行結(jié)果:  

      小娃娃哇哇的哭。。。。

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

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

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

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

      2.      函數(shù)體。。。

      3. }

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

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

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

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

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

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

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

      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的屬性初始化完畢?。?!');

      13.     }

      14.     //哭

      15.     public void cry(){

      16.         System.out.println(this.name+'哇哇的哭。。。。');

      17.     }

      18. }

      19. class Test{

      20.     public static void main(String[] args) {

      21.         //創(chuàng)建一個(gè)baby對(duì)象

      22.         Baby baby = new Baby(222,'小可愛');//嬰兒出生    白戶

      23.         baby.cry();

      24.     }

      25. }

      運(yùn)行結(jié)果:

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

      小可愛哇哇的哭。。。。

      通過上面的黑戶和白戶,我們能對(duì)構(gòu)造函數(shù)有個(gè)深刻的理解,下面我再引申出構(gòu)造代碼塊,依舊是這個(gè)例子,但是需求變了,現(xiàn)在的需求是嬰兒一出生就必須哭,可能說到這,要是有人理解了上面的代碼,肯定馬上就能想到,這還不簡單,把哭的方法寫到構(gòu)造函數(shù)中不就行了,對(duì),這樣確實(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. }

      20. class Test{

      21.     public static void main(String[] args) {

      22.         //創(chuàng)建一個(gè)白戶baby對(duì)象

      23.         Baby baby = new Baby(222,'小可愛');//白戶

      24.         //創(chuàng)建一個(gè)黑戶baby對(duì)象

      25.         Baby baby1 = new Baby();//黑戶

      26.     }

      27. }

      運(yùn)行結(jié)果:

      哇哇的哭。。。。

      哇哇的哭。。。。

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

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

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

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

      1. {

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

      3. }

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

      代碼塊的類別:

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

      2.局部代碼塊        大括號(hào)位于方法之內(nèi)       作用:縮短局部變量的生命周期,節(jié)省一點(diǎn)點(diǎn)內(nèi)存

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

      1. static{

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

      3. }

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

      1.Java編譯器編譯一個(gè)Java源文件的時(shí)候,會(huì)把成員變量的聲明語句提前至一個(gè)類的最前端

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

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

      4.成員變量的顯式初始化與構(gòu)造代碼塊的代碼是按照當(dāng)前代碼的順序執(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. }

      22. class Test{

      23.     public static void main(String[] args) {

      24.         //創(chuàng)建一個(gè)白戶baby對(duì)象

      25.         Baby baby = new Baby(222,'小可愛');//白戶

      26.         //創(chuàng)建一個(gè)黑戶baby對(duì)象

      27.         Baby baby1 = new Baby();//黑戶

      28.         //匿名對(duì)象

      29.         new Baby();

      30.     }

      31. }  

      運(yùn)行結(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. }

      22. class Test{

      23.     public static void main(String[] args) {

      24.         //局部代碼塊

      25.         {

      26.             //創(chuàng)建一個(gè)白戶baby對(duì)象

      27.             Baby baby = new Baby(222,'小可愛');//白戶

      28.             //創(chuàng)建一個(gè)黑戶baby對(duì)象

      29.             Baby baby1 = new Baby();//黑戶

      30.             //匿名對(duì)象

      31.             new Baby();

      32.         }

      33.     }

      34. }

      本文作者:泰斗賢若如

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多