由于構(gòu)造器的概念相當(dāng)?shù)某橄?,所以?dāng)時我在理解構(gòu)造器的時候花費了很久的時間。
因為很多時候用比喻來解釋代碼對于理解代碼更加方便,所以我盡量用淺顯的比喻來解釋。以下是我對構(gòu)造器的一些個人理解。
以下圖的代碼為例。

在這串代碼中,Construct為我們要的對象,可以將它看成一個工程。而構(gòu)造器相當(dāng)于一個儲存各類工具的地方。外部定義的常量為我們
需要的工具。代碼中,new出的s1與s2可以看成是產(chǎn)生的兩個不同效果的工程或看成為兩個不同的員工。x-someone.x是用特定的工具完
成這個工程所用的方法。
現(xiàn)在,我們最后需要的工程為s2.distance(s1)。首先我們new出的是s2對象,也就是在s2環(huán)境下對工程的操作。s2中的常量傳到
構(gòu)造器的參數(shù)中,使得成為全局變量。因此s2中的x的值就賦給了x-someone.x中的前面一個x。而distance方法的變量為new出的Construct
對象,s2.distance(s1)就是在s2環(huán)境中運行distance方法,方法的變量為new出的s1對象,這時s1將它自己的值又重新傳到構(gòu)造器成為一
個新的對象,將s1中的x的值賦給了someone.x。因此,最后工程的結(jié)果為s2(x)-someone.s1(x)。
構(gòu)造器和方法的不同除了修飾符,返回值和命名的不同,還有功能和作用的不同。
構(gòu)造器用來創(chuàng)建對象,同時可以給屬性做初始化,而方法的作用僅僅是功能函數(shù),為了執(zhí)行java代碼。