摘要:多個(gè)構(gòu)造器的名字相同,但形參列表不同。但一旦使用關(guān)鍵字來(lái)調(diào)用構(gòu)造器,將會(huì)導(dǎo)致系統(tǒng)重新創(chuàng)建一個(gè)對(duì)象。此時(shí)可以通過(guò)關(guān)鍵字調(diào)用相應(yīng)的構(gòu)造器。
構(gòu)造器是創(chuàng)建對(duì)象的重要途徑(即使使用工廠(chǎng)模式、反射等方式創(chuàng)建對(duì)象,其實(shí)質(zhì)依然是依賴(lài)于構(gòu)造器),因此,Java類(lèi)必須包含一個(gè)或一個(gè)以上的構(gòu)造器。
使用構(gòu)造器執(zhí)行初始化構(gòu)造器最大的用處就是在創(chuàng)建對(duì)象時(shí)執(zhí)行初始化。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),系統(tǒng)為這個(gè)對(duì)象的實(shí)例變量進(jìn)行默認(rèn)初始化,這種默認(rèn)的初始化把所有基本類(lèi)型的變量設(shè)為0,把所有引用類(lèi)型的實(shí)例變量設(shè)為null.
如果程序員沒(méi)有為Java類(lèi)提供任何構(gòu)造器,則系統(tǒng)會(huì)為這個(gè)類(lèi)提供一個(gè)無(wú)參數(shù)的構(gòu)造器。這個(gè)構(gòu)造器執(zhí)行體為空,不做任何事情。無(wú)論如何,Java類(lèi)至少包含一個(gè)構(gòu)造器
構(gòu)造器主要用于被其他方法調(diào)用,用以返回該類(lèi)的實(shí)例,因而通常把構(gòu)造器設(shè)置成public訪(fǎng)問(wèn)權(quán)限,從而允許系統(tǒng)中任何位置的類(lèi)來(lái)創(chuàng)建該類(lèi)的對(duì)象。
構(gòu)造器重載同一個(gè)類(lèi)里具有多個(gè)構(gòu)造器,多個(gè)構(gòu)造器參數(shù)列表不同,即被稱(chēng)為構(gòu)造器重載。多個(gè)構(gòu)造器的名字相同,但形參列表不同。系統(tǒng)通過(guò)new調(diào)用構(gòu)造器時(shí),系統(tǒng)將根據(jù)傳入的實(shí)參列表來(lái)決定調(diào)用哪個(gè)構(gòu)造器。
如果系統(tǒng)中包含了多個(gè)構(gòu)造器,其中一個(gè)構(gòu)造器包含了另一個(gè)構(gòu)造器的執(zhí)行體,如何做到代碼復(fù)用呢?
假設(shè)構(gòu)造器B完全包含了構(gòu)造器A。如果是兩個(gè)方法之間存在這種關(guān)系,則可在方法B中調(diào)用方法A。但構(gòu)造器補(bǔ)不能直接被調(diào)用,構(gòu)造器必須使用new關(guān)鍵字來(lái)調(diào)用。但一旦使用new關(guān)鍵字來(lái)調(diào)用構(gòu)造器,將會(huì)導(dǎo)致系統(tǒng)重新創(chuàng)建一個(gè)對(duì)象。此時(shí)可以通過(guò)this關(guān)鍵字調(diào)用相應(yīng)的構(gòu)造器。
public class Test { public String name; public String color; public double weight; public Test() {} public Test(String name, String color) { this.name = name; this.color = color; } public Test(String name, String color, double weight) { this(name, color); this.weight = weight; } public static void main(String[] args) { Test mytest = new Test("apple", "red", 12.5); System.out.println(mytest.name); //apple System.out.println(mytest.color); //red System.out.println(mytest.weight); //12.5 } }
使用this調(diào)用另一個(gè)重載的構(gòu)造器只能在構(gòu)造器中使用,而且必須作為構(gòu)造器執(zhí)行體的第一條語(yǔ)句。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68523.html
摘要:類(lèi)用于描述客觀世界里某一類(lèi)對(duì)象的共同特征,而對(duì)象則是類(lèi)的具體的存在,程序使用類(lèi)的構(gòu)造器來(lái)創(chuàng)建該類(lèi)的對(duì)象。也支持面向?qū)ο蟮娜筇卣鞣庋b繼承和多態(tài)。構(gòu)造器用于對(duì)類(lèi)實(shí)例進(jìn)行初始化操作,構(gòu)造器支持重載。 Java是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,Java語(yǔ)言提供了定義類(lèi)、成員變量、方法等最基本的功能。類(lèi)可被認(rèn)為是一種自定義的數(shù)據(jù)類(lèi)型,可以使用類(lèi)來(lái)定義變量。類(lèi)用于描述客觀世界里某一類(lèi)對(duì)象的共同特征,而對(duì)...
摘要:上一篇小樂(lè)介紹了新特性函數(shù)式接口,大家可以點(diǎn)擊回顧。中引入方法引用新特性用于簡(jiǎn)化應(yīng)用對(duì)象方法的調(diào)用,方法引用是用來(lái)直接訪(fǎng)問(wèn)類(lèi)或者實(shí)例的已經(jīng)存在的方法或者構(gòu)造方法。方法引用是一種更簡(jiǎn)潔易懂的表達(dá)式。 上一篇小樂(lè)介紹了《Java8新特性-函數(shù)式接口》,大家可以點(diǎn)擊回顧。這篇文章將接著介紹Java8新特性之方法引用。 Java8 中引入方法引用新特性,用于簡(jiǎn)化應(yīng)用對(duì)象方法的調(diào)用,?方法引用是...
摘要:一構(gòu)造器構(gòu)造器的作用是構(gòu)造并初始化實(shí)例對(duì)象。在的每個(gè)類(lèi)中,至少要有一個(gè)構(gòu)造器,沒(méi)有定義的話(huà),編譯器將自動(dòng)插入缺省的構(gòu)造器。一般把構(gòu)造器設(shè)置為訪(fǎng)問(wèn)權(quán)限,設(shè)置為是為了阻止其他類(lèi)創(chuàng)建該類(lèi)的實(shí)例。 一. 構(gòu)造器 構(gòu)造器的作用是構(gòu)造并初始化實(shí)例對(duì)象。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),系統(tǒng)為這個(gè)對(duì)象的屬性進(jìn)行初始化。 二. 語(yǔ)法 class 類(lèi)名 { 變量聲明; 類(lèi)的名稱(chēng)(參數(shù)列表) { ...
摘要:注本文首發(fā)于公眾號(hào),可長(zhǎng)按或掃描下面的小心心來(lái)訂閱關(guān)于構(gòu)造器與初始化無(wú)參構(gòu)造器默認(rèn)構(gòu)造器自己未寫(xiě)編譯器幫忙自動(dòng)創(chuàng)建的若自行定義了構(gòu)造器無(wú)論參數(shù)有否,編譯器便停止默認(rèn)創(chuàng)建動(dòng)作類(lèi)里的對(duì)象引用默認(rèn)初始化為,基本類(lèi)型初始化為構(gòu)造器也是類(lèi)的靜態(tài)方法四 showImg(https://segmentfault.com/img/remote/1460000015723687); 注: 本文首發(fā)于 ...
摘要:的動(dòng)態(tài)性反射機(jī)制動(dòng)態(tài)編譯動(dòng)態(tài)執(zhí)行代碼動(dòng)態(tài)字節(jié)碼操作動(dòng)態(tài)語(yǔ)言程序運(yùn)行時(shí)可以改變程序得結(jié)構(gòu)或變量類(lèi)型典型語(yǔ)言等如下代碼不是動(dòng)態(tài)語(yǔ)言但有一定的動(dòng)態(tài)性我們可以利用反射機(jī)制字節(jié)碼操作獲得類(lèi)似動(dòng)態(tài)語(yǔ)言的特性的動(dòng)態(tài)性讓編程的時(shí)候更加靈活反射機(jī)制反射機(jī)制指 1.Java的動(dòng)態(tài)性 反射機(jī)制 動(dòng)態(tài)編譯 動(dòng)態(tài)執(zhí)行JavaScript代碼 動(dòng)態(tài)字節(jié)碼操作 2.動(dòng)態(tài)語(yǔ)言 程序運(yùn)行時(shí),可以改變程序得結(jié)構(gòu)或變量...
閱讀 2544·2021-11-18 10:02
閱讀 2027·2021-11-09 09:45
閱讀 2510·2021-09-26 09:47
閱讀 1070·2021-07-23 10:26
閱讀 1110·2019-08-30 15:47
閱讀 3390·2019-08-30 15:44
閱讀 1008·2019-08-30 15:43
閱讀 915·2019-08-29 13:50