構造函數與通常函數

構造函數:用於給對象進行初始化,是給與之對應的對象進行初始化,它具備針對性,函數中的一種。函數

特色spa

1該函數的名稱和所在類的名稱相同。對象

2不須要定義返回值類型。內存

3該函數沒有具體的返回值。class

記住:全部對象建立時,都須要初始化纔可使用。變量

 

注意事項:一個類在定義時,若是沒有定義過構造函數,那麼該類中會自動生成一個空參數的構造函數,爲了方便該類建立對象,完成初始化。若是在類中自定義了構造函數,那麼默認的構造函數就沒有了。構造函數

 

一個類中,能夠有多個構造函數,由於它們的函數名稱都相同,因此只能經過參數列表來區分。因此,一個類中若是出現多個構造函數。它們的存在是以重載體現的。引用

 

構造函數和通常函數有什麼區別呢?方法

1兩個函數定義格式不一樣。margin

2構造函數是在對象建立時,就被調用,用於初始化,並且初始化動做只執行一次。

    通常函數,是對象建立後,須要調用才執行,能夠被調用屢次。

  

何時使用構造函數呢?

分析事物時,發現具體事物一出現,就具有了一些特徵,那就將這些特徵定義到構造函數內。

 

構造代碼塊和構造函數有什麼區別?

構造代碼塊:是給全部的對象進行初始化,也就是說,全部的對象都會調用一個代碼塊。只要對象一創建。就會調用這個代碼塊。

構造函數:是給與之對應的對象進行初始化。它具備針對性。

 

Person p = new Person();

建立一個對象都在內存中作了什麼事情?

1先將硬盤上指定位置的Person.class文件加載進內存。

2執行main方法時,在棧內存中開闢了main方法的空間(壓棧-進棧),而後在main方法的棧區分配了一個變量p。

3在堆內存中開闢一個實體空間,分配了一個內存首地址值。new

4在該實體空間中進行屬性的空間分配,並進行了默認初始化。

5對空間中的屬性進行顯示初始化。

6進行實體的構造代碼塊初始化。

7調用該實體對應的構造函數,進行構造函數初始化。()

8將首地址賦值給p ,p變量就引用了該實體。(指向了該對象)

相關文章
相關標籤/搜索