1. 程式人生 > >構造器Constructor不能重寫,但是可以被過載

構造器Constructor不能重寫,但是可以被過載

構造器Constructor不能被繼承,因此不能重寫Override,但可以被過載Overload。

Constructor不能被繼承,所以Constructor也就不能被override。每一個類必須有自己的建構函式,負責構造自己這部分的構造。子類不會覆蓋父類的建構函式,相反必須負責在一開始呼叫父類的建構函式

一、構造器是幹什麼用的?(what)

     構造器是用來生成一個類的例項是用來初始化這個例項用的

二、構造器如何工作?(how)

     Java在構造例項時的順序是這樣的:

1、分配物件空間,並將物件中成員初始化為0或者空,java不允許使用者操縱一個不定值的物件。   

2、執行屬性值的顯式初始化   

3、執行構造器   

4 、將變數關聯到堆中的物件上

而執行構造器的步驟有可以分為以下幾步:

1、Bind構造器的引數

2、如果顯式的呼叫了this,那就遞迴呼叫this構造器然後跳到步驟5

3、遞迴呼叫顯式或者隱式的父類構造器,除了Object以外,因為它沒有父類

4、執行顯式的例項變數初始化(也就是上邊的流程中的第二步,呼叫返回以後執行,

   這個步驟相當於在父構造器執行後隱含執行的,看樣子像一個特殊處理)

三、構造器不可被orerride(why)

其實你只需要記住一句話:構造器不是方法,那麼用來修飾方法特性的所有修飾符都不能用來修飾構造器(並不等與構造器

具備這些特性,雖然不能用static修飾構造器,但它卻有靜態特性)構造器只能用 public private protected這

三個許可權修飾符,且不能有返回語句。