私有構(gòu)造器怎么在Java中使用?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)樂清,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108構(gòu)造器作為Java類的一個(gè)特殊的成員同樣可以設(shè)置關(guān)鍵字來控制其訪問權(quán)限。在大多數(shù)情況下,我們一般把構(gòu)造器設(shè)置為公有成員,即public的,在默認(rèn)情況下,如果不寫任何關(guān)鍵字,其訪問權(quán)限也是public。這樣,在我們新建一個(gè)類的對象的時(shí)候,構(gòu)造器會創(chuàng)建對象后被自動調(diào)用,發(fā)生在其他類成員被設(shè)置為默認(rèn)初始值之后,當(dāng)然如果有字段初始器和初始化塊的話,構(gòu)造器的調(diào)用會發(fā)生在此之后。構(gòu)造器的主要作用是在new將對象的引用返回之前初始化對象。
言歸正傳,什么叫私有構(gòu)造器。所謂私有構(gòu)造器,就是用private關(guān)鍵字聲明的構(gòu)造器,即使用private關(guān)鍵字聲明的構(gòu)造函數(shù)。。與一般公有構(gòu)造器大的區(qū)別在于,其訪問權(quán)限是private,于是它只能被包含它的類自身所訪問,而無法在類的外部調(diào)用,故而可以阻止對象的生成。所以,如果一個(gè)類只有一個(gè)私有構(gòu)造器,而沒有任何公有構(gòu)造器,是無法生成任何對象的。
由于類的構(gòu)造函數(shù)時(shí)私有的,所以此類不能被實(shí)例化,同時(shí)也不能被繼承。《Effective Java》第三條:用私有構(gòu)造器或者枚舉強(qiáng)化Singleton屬性。所謂Singleton屬性是指僅僅被實(shí)例化一次的類。第四條:通過私有構(gòu)造器強(qiáng)化不可實(shí)例化的能力。在Java中實(shí)現(xiàn)Singleton有兩種方式:
public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {} }