構(gòu)造器constructor是否可被override重寫?
一、構(gòu)造器是干什么用的?
構(gòu)造器是用來生成一個類的實(shí)例是用來初始化這個實(shí)例用的。
二、構(gòu)造器如何工作?
Java在構(gòu)造實(shí)例時的順序是這樣的:
1.分配對象空間,并將對象中成員初始化為0或者空,java不允許用戶操縱一個不定值的對象。
2.執(zhí)行屬性值的顯式初始化。
3.執(zhí)行構(gòu)造器。
4.將變量關(guān)聯(lián)到堆中的對象上。
而執(zhí)行構(gòu)造器的步驟有可以分為以下幾步:
1.Bind構(gòu)造器的參數(shù).
2.如果顯式的調(diào)用了this,那就遞歸調(diào)用this構(gòu)造器.
3.遞歸調(diào)用顯式或者隱式的父類構(gòu)造器,除了Object以外,因?yàn)樗鼪]有父類.
4.執(zhí)行顯式的實(shí)例變量初始化(也就是上邊的流程中的第二步,調(diào)用返回以后執(zhí)行,這個步驟相當(dāng)于在父構(gòu)造器執(zhí)行后隱含執(zhí)行的,看樣子像一個特殊處理).
構(gòu)造器不可被orerride,其實(shí)你只需要記住一句話:構(gòu)造器不是方法,那么用來修飾方法特性的所有修飾符都不能用來修飾構(gòu)造器(并不等與構(gòu)造器具備這些特性,雖然不能用static修飾構(gòu)造器,但它卻有靜態(tài)特性)構(gòu)造器只能用public,private,protected這三個權(quán)限修飾符,且不能有返回語句。
構(gòu)造器Constructor不能被繼承,因此不能重寫Override,但可以被重載Overload。
構(gòu)造器Constructor不能被繼承,所以構(gòu)造器Constructor也就不能被override。每一個類必須有自己的構(gòu)造函數(shù),負(fù)責(zé)構(gòu)造自己這部分的構(gòu)造。子類不會覆蓋父類的構(gòu)造函數(shù),相反必須負(fù)責(zé)在一開始調(diào)用父類的構(gòu)造函數(shù)。