構造函數,構造代碼塊,靜態代碼塊

一、構造函數
1、作用:產生一個類的實例,給對象進行初始化。

 (對象一建立,就會調用與之對應的構造函數。)


2、特點:
1)、函數名與類名相同。
2)、不用定義返回值類型

3)、不可以寫return語句。


3、注意:
1)、默認構造函數的特點。

(如果在程序中沒有定義任何構造函數,則編譯器會自動加上一個不帶任何參數的構造函數,默認構造函數不帶任何參數,也沒有“方法體”。當在類中定義了構造函數後,默認的構造函數就不存在了。)

2)、多個構造函數是以重載的形式存在的。


4、構造函數與一般函數的區別:
構造函數在對象一建立就運行,給對象初始化。
而一般函數是給對象調用才執行,給對象添加對象具備的功能。

對象一建立,構造函數只運行一次,而一般函數可以調用多次。


5、什麼時候定義構造函數?

當分析事物時,該事物具備一些特性或者行爲,那麼將其定義在構造函數中。


6、一個類中默認會有一個空參數的構造函數。
這個默認的構造函數的權限和所屬類一致。
如果類被public修飾,那麼默認的構造函數也帶pubic修飾符。
如果類沒有被public修飾,那麼默認的構造函數也沒有public修飾。
默認構造函數的權限是隨着類的變化而變化的。


二、構造代碼塊(也叫:初始化塊)

1、格式:
{
構造代碼塊執行語句。

}


2、作用:給對象進行初始化。

對象一建立,就運行,優先於構造函數執行。


3、構造代碼塊和構造函數的區別:

構造代碼塊是給所有對象初始化,而構造函數是給對應對象初始化。

      (構造代碼塊是不同對象的共性初始化。)


4、注意:構造代碼塊必須是public。


三、靜態代碼塊
1、格式:
static
{
靜態代碼塊中的執行語句;

}


2、作用:用於給類進行初始化。並且優先於主函數。


3、特點:隨着類的加載而執行,只執行一次。


<pre name="code" class="html">class Person
{
	private String name;
	private int age;
	//以重載的方式,定義不同的構造函數,對不同的數據類型進行初始化。
	Person()
	{
		System.out.println("A:name="+name+","+"age="+age);
	}
	Person(String name)
	{
		System.out.println("B:name="+name+","+"age="+age);
	}
	Person(String name,int age)
	{
		System.out.println("C:name="+name+","+"age="+age);
	}
	{
		System.out.println("這是構造代碼塊");
	}
	static
	{
		System.out.println("這是靜態代碼塊");
	}
	
	public static void main(String[] args) 
	{
		Person person=new Person();
		Person person1=new Person("上發條的樹");
	}
}



創建一個Person類,分別寫入靜態代碼塊,構造代碼塊和構造函數,控制檯打印結果如下:


這是靜態代碼塊
這是構造代碼塊
A:name=null,age=0
這是構造代碼塊
B:name=上發條的樹,age=0


三者區別分析:靜態代碼塊是給類初始化,隨着類的加載而加載,只執行一次。構造代碼塊是給對象初始化,對象一 建立,就運行,優先於構造函數執行。構造函數給特定對象初始化,對象一建立,就會調用與之對應 的構 造函 數。構造代碼塊是給所有對象初始化,而構造函數是給對應對象初始化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章