首頁(yè) 培訓(xùn)網(wǎng) 最新資訊 熱門(mén)問(wèn)答

JAVA

13727629617 免費(fèi)試聽(tīng) 在線客服

您的位置: 北京培訓(xùn)網(wǎng) > JAVA培訓(xùn)資訊 > Java培訓(xùn)課程之構(gòu)造函數(shù)好學(xué)嗎

Java培訓(xùn)課程之構(gòu)造函數(shù)好學(xué)嗎

來(lái)源:教育聯(lián)展網(wǎng) | 發(fā)布時(shí)間: | 編輯:佚名

如果說(shuō)每種語(yǔ)言都千秋各異,那么Java開(kāi)發(fā)有太多的原因使得Java成為世界上**受歡迎的腳本語(yǔ)言——高度靈活、簡(jiǎn)單易用——不過(guò)寫(xiě)Java(或者任何這種語(yǔ)言)代碼時(shí),人們常常陷入單調(diào)重復(fù)而令人生厭的體力活動(dòng)的窘境。而這正是Java開(kāi)發(fā)框架大顯身手的地方。

Java培訓(xùn)課程之構(gòu)造函數(shù)

Java中的構(gòu)造函數(shù)是初學(xué)者必須要學(xué)習(xí)經(jīng)歷的一個(gè)階段,對(duì)于初學(xué)者來(lái)說(shuō)可能一開(kāi)始會(huì)犯暈,但等你學(xué)完之后,你就會(huì)覺(jué)得構(gòu)造函數(shù)其實(shí)很簡(jiǎn)單,今天千鋒小編總結(jié)了一些關(guān)于java構(gòu)造函數(shù)的一些知識(shí)點(diǎn),希望能幫助初學(xué)者快速入門(mén)學(xué)好java構(gòu)造函數(shù)。

1.構(gòu)造函數(shù)的概念

首先,構(gòu)造函數(shù)是函數(shù)的一種特殊形式,特殊在哪里?構(gòu)造函數(shù)中不需要定義返回類型(void是無(wú)需返回值的意思,請(qǐng)注意區(qū)分兩者),且構(gòu)造函數(shù)的名稱與所在的類名完全一致,其余的與函數(shù)的特性相同,可以帶有參數(shù)列表,可以存在函數(shù)的重載現(xiàn)象。

在這里要說(shuō)明一點(diǎn),如果在類中我們不聲明構(gòu)造函數(shù),JVM會(huì)幫我們默認(rèn)生成一個(gè)空參數(shù)的構(gòu)造函數(shù);如果在類中我們聲明了帶參數(shù)列表的構(gòu)造函數(shù),JVM就不會(huì)幫我們默認(rèn)生成一個(gè)空參數(shù)的構(gòu)造函數(shù),我們想要使用空參數(shù)的構(gòu)造函數(shù)就必須自己去顯式的聲明一個(gè)空參的構(gòu)造函數(shù)。

2.構(gòu)造函數(shù)的作用

**開(kāi)頭的介紹,構(gòu)造函數(shù)的輪廓已經(jīng)漸漸清晰,那么為什么會(huì)有構(gòu)造函數(shù)呢?構(gòu)造函數(shù)有什么作用?構(gòu)造函數(shù)是面向?qū)ο缶幊趟枷胨枨蟮?,它的主要作用有以下兩個(gè):

1)  創(chuàng)建對(duì)象。任何一個(gè)對(duì)象創(chuàng)建時(shí),都需要初始化才能使用,所以任何類想要?jiǎng)?chuàng)建實(shí)例對(duì)象就必須具有構(gòu)造函數(shù)。

2)  對(duì)象初始化。構(gòu)造函數(shù)可以對(duì)對(duì)象進(jìn)行初始化,并且是給與之格式(參數(shù)列表)相符合的對(duì)象初始化,是具有一定針對(duì)性的初始化函數(shù)。

4.構(gòu)造函數(shù)與普通函數(shù)的區(qū)別

下面來(lái)詳細(xì)的分析下構(gòu)造函數(shù)與普通函數(shù)的區(qū)別,**兩者的一個(gè)對(duì)比,希望可以加深對(duì)構(gòu)造函數(shù)的概念的理解。

1)  格式不同:

構(gòu)造函數(shù)不存在返回類型,函數(shù)名與所在類的類名一致;

普通函數(shù)有返回類型,函數(shù)名可以根據(jù)需求進(jìn)行命名。

2)調(diào)用時(shí)期不同

構(gòu)造函數(shù)在類的對(duì)象創(chuàng)建時(shí)就運(yùn)行;

普通函數(shù)在對(duì)象調(diào)用時(shí)才會(huì)執(zhí)行。

3)執(zhí)行次數(shù)不同

一個(gè)對(duì)象創(chuàng)建后,其構(gòu)造函數(shù)只執(zhí)行一次,就是創(chuàng)建時(shí)執(zhí)行;

一個(gè)對(duì)象創(chuàng)建后,其普通函數(shù)可以執(zhí)行多次,取決于對(duì)象的調(diào)用次數(shù)。

5.構(gòu)造函數(shù)的使用場(chǎng)景

分析了那么多構(gòu)造函數(shù)的信息,那么什么時(shí)候使用構(gòu)造函數(shù)呢?既然構(gòu)造函數(shù)是對(duì)新對(duì)象進(jìn)行初始化,那么當(dāng)開(kāi)發(fā)中分析事物的時(shí)候,發(fā)現(xiàn)事物一出現(xiàn)就具備了某些特征時(shí),就可以將其定義在構(gòu)造函數(shù)中,這樣方便快捷,也符合面向?qū)ο蟮木幊趟枷搿?/span>

3.構(gòu)造函數(shù)在繼承中的特點(diǎn)

在繼承中,子類創(chuàng)建的對(duì)象可以調(diào)用父類的公共方法和屬性,那么子類會(huì)不會(huì)調(diào)用父類的構(gòu)造函數(shù)呢?子類的構(gòu)造函數(shù)與父類的構(gòu)造函數(shù)有什么關(guān)系?子類的構(gòu)造函數(shù)需要注意些什么問(wèn)題呢?下面來(lái)解答這三個(gè)問(wèn)題。

1) 子類會(huì)不會(huì)調(diào)用父類的函數(shù)?

子類繼承父類,子類對(duì)象初始化時(shí)父類的構(gòu)造函數(shù)也會(huì)執(zhí)行,因?yàn)樽宇愋枰褂酶割愔械膶傩?,子類需要知道是如何初始化的,所以子類初始化必然?huì)調(diào)用父類的構(gòu)造函數(shù)(除非父類沒(méi)有屬性,那么這個(gè)類的描述也太差了點(diǎn),或者沒(méi)有必要去創(chuàng)建這個(gè)類了)。

2) 子類的構(gòu)造函數(shù)與父類的構(gòu)造函數(shù)有什么關(guān)系?

子類的構(gòu)造函數(shù)中默認(rèn)的**行有一條隱式語(yǔ)句super(),該語(yǔ)句會(huì)訪問(wèn)父類中的空參數(shù)構(gòu)造函數(shù),除非父類中沒(méi)有空參數(shù)的構(gòu)造函數(shù),那么子類構(gòu)造函數(shù)的**行必須顯式調(diào)用父類的構(gòu)造函數(shù),即super(int x,…) 。

3) 子類的構(gòu)造函數(shù)需要注意些什么問(wèn)題呢?

子類的構(gòu)造函數(shù)中,super()語(yǔ)句代表調(diào)用了父類的構(gòu)造函數(shù);this()語(yǔ)句代表調(diào)用了子類自身的構(gòu)造函數(shù)。需要注意的是,如果這兩條語(yǔ)句顯式寫(xiě)出來(lái)必須放在構(gòu)造方法的**行,而且這兩條語(yǔ)句不能共存,一個(gè)構(gòu)造函數(shù)中的**行要么是this()要么是super()。

為什么在**行?因?yàn)樾枰紫冗M(jìn)行初始化。

為什么不能共存?因?yàn)?/span>this()代表的本類的其他構(gòu)造函數(shù),也會(huì)去調(diào)用super(),出現(xiàn)了this()就沒(méi)有必要再出現(xiàn)super()了,重復(fù)調(diào)用沒(méi)有意義。換言之,子類中至少有一個(gè)構(gòu)造函數(shù)的開(kāi)頭為super(),當(dāng)然可以隱式存在;也就是說(shuō)至少有一個(gè)構(gòu)造函數(shù)的開(kāi)頭不是this()。

4.構(gòu)造函數(shù)的擴(kuò)展

以上已經(jīng)講構(gòu)造函數(shù)的概念、特點(diǎn)、使用等問(wèn)題介紹的比較清楚,下面來(lái)介紹幾點(diǎn)與構(gòu)造函數(shù)相關(guān)的擴(kuò)展性的小知識(shí)。

1)  所有的類都有構(gòu)造函數(shù)么?構(gòu)造函數(shù)可以被私有化么?

既然構(gòu)造函數(shù)用于創(chuàng)建對(duì)象并且初始化對(duì)象,那么當(dāng)一個(gè)類不需要?jiǎng)?chuàng)建對(duì)象時(shí),就不需要定義構(gòu)造函數(shù),但是在java中,所有的類都擁有構(gòu)造函數(shù),只是有些類的構(gòu)造函數(shù)對(duì)開(kāi)發(fā)人員來(lái)說(shuō)是隱藏不可見(jiàn)的,這一點(diǎn)與我們的預(yù)期不同

不過(guò)換個(gè)角度這也很好理解,因?yàn)?/span>java是面向?qū)ο蟮?,我們?chuàng)建類的目的就是為了創(chuàng)建對(duì)象或者創(chuàng)建其子類對(duì)象,所以沒(méi)有構(gòu)造函數(shù)的類(無(wú)法創(chuàng)建對(duì)象的類)并沒(méi)有什么意義。

而對(duì)于第二個(gè)問(wèn)題,一個(gè)類不想要外界創(chuàng)建其對(duì)象時(shí),就可以將其構(gòu)造函數(shù)私有化,本類中提供返回對(duì)象的方法,并且多數(shù)情況下提供的對(duì)象是**的,單例設(shè)計(jì)模式就是一個(gè)很好的例子,而當(dāng)我們開(kāi)發(fā)中需要保證對(duì)象**性的時(shí)候,往往就采取這種做法。

2)  構(gòu)造代碼塊與構(gòu)造函數(shù)有什么相似和不同?

構(gòu)造代碼塊用一對(duì)“{}”表示,代碼塊位置沒(méi)有具體的要求,但必須與類的成員同等級(jí)別,在括號(hào)的區(qū)域內(nèi),可以對(duì)所有該類的對(duì)象進(jìn)行初始化,也就是說(shuō)該類對(duì)象創(chuàng)建時(shí)都會(huì)執(zhí)行到該代碼塊,并且其優(yōu)先于構(gòu)造函數(shù)執(zhí)行。構(gòu)造函數(shù)如前面提到的是具有針對(duì)性的,而構(gòu)造代碼塊是作用于所有本類對(duì)象的。

千鋒作為中國(guó)IT職業(yè)教育**品牌,一直秉承“用良心做教育”的理念,采用100%全程面授高品質(zhì)、高成本培養(yǎng)模式,教學(xué)大綱緊跟企業(yè)需求,且擁有全國(guó)一體化就業(yè)保障服務(wù),已成為深受學(xué)員信賴的IT職業(yè)教育品牌。

如果你也看好IT技術(shù)行業(yè),如果你也想要擁得高薪,如果你也想要掌握一門(mén)專業(yè)技術(shù),那么選擇千鋒將會(huì)成為你成功蛻變的**步!

 

以上就是Java培訓(xùn)課程之構(gòu)造函數(shù)的課程信息介紹,如果還想要了解更多有關(guān)Java培訓(xùn)的其他機(jī)構(gòu)或者其他課程的話,可以登錄我們的網(wǎng)站進(jìn)行瀏覽查詢:教育聯(lián)展網(wǎng)以及 中華網(wǎng)考試 ?;蛘邠艽蛭覀兊淖稍儫峋€。

課程定制與咨詢:010-64707530 金老師

熱門(mén)機(jī)構(gòu)推薦
JAVA

免費(fèi)體驗(yàn)課開(kāi)班倒計(jì)時(shí)

11: 41: 09

稍后會(huì)有專業(yè)老師給您回電,請(qǐng)保持電話暢通

咨詢電話:13727629617

本周熱門(mén)資訊

全國(guó)分站 熱門(mén)機(jī)構(gòu)

北京JAVA培訓(xùn) 上海JAVA培訓(xùn) 廣州JAVA培訓(xùn) 深圳JAVA培訓(xùn) 杭州JAVA培訓(xùn) 蘇州JAVA培訓(xùn) 南京JAVA培訓(xùn) 天津JAVA培訓(xùn) 佛山JAVA培訓(xùn) 南寧JAVA培訓(xùn) 長(zhǎng)沙JAVA培訓(xùn) 重慶JAVA培訓(xùn) 太原JAVA培訓(xùn) 青島JAVA培訓(xùn) 寧波JAVA培訓(xùn) 鄭州JAVA培訓(xùn) 西安JAVA培訓(xùn) 廈門(mén)JAVA培訓(xùn) 武漢JAVA培訓(xùn) 成都JAVA培訓(xùn) 無(wú)錫JAVA培訓(xùn) 濟(jì)南JAVA培訓(xùn) 昆明JAVA培訓(xùn) 貴陽(yáng)JAVA培訓(xùn) 揚(yáng)州JAVA培訓(xùn) 徐州JAVA培訓(xùn) 珠海JAVA培訓(xùn) 合肥JAVA培訓(xùn) 長(zhǎng)春JAVA培訓(xùn)

深圳博為峰教育深圳中公優(yōu)就業(yè)南京博為峰教育南京和盈教育

申請(qǐng)?jiān)嚶?tīng)名額

已有10254人申請(qǐng)免費(fèi)試聽(tīng)

01電話咨詢 | 13727629617

QQ:
加盟合作:0755-83654572

今日已有25人申請(qǐng),本月限額500