1、作用:產生一個類的實例,給對象進行初始化。
(對象一建立,就會調用與之對應的構造函數。)
1)、函數名與類名相同。
2)、不用定義返回值類型
3)、不可以寫return語句。
1)、默認構造函數的特點。
(如果在程序中沒有定義任何構造函數,則編譯器會自動加上一個不帶任何參數的構造函數,默認構造函數不帶任何參數,也沒有“方法體”。當在類中定義了構造函數後,默認的構造函數就不存在了。)
2)、多個構造函數是以重載的形式存在的。
構造函數在對象一建立就運行,給對象初始化。
而一般函數是給對象調用才執行,給對象添加對象具備的功能。
對象一建立,構造函數只運行一次,而一般函數可以調用多次。
當分析事物時,該事物具備一些特性或者行爲,那麼將其定義在構造函數中。
這個默認的構造函數的權限和所屬類一致。
如果類被public修飾,那麼默認的構造函數也帶pubic修飾符。
如果類沒有被public修飾,那麼默認的構造函數也沒有public修飾。
默認構造函數的權限是隨着類的變化而變化的。
二、構造代碼塊(也叫:初始化塊)
1、格式:{
構造代碼塊執行語句。
}
對象一建立,就運行,優先於構造函數執行。
構造代碼塊是給所有對象初始化,而構造函數是給對應對象初始化。
(構造代碼塊是不同對象的共性初始化。)
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
三者區別分析:靜態代碼塊是給類初始化,隨着類的加載而加載,只執行一次。構造代碼塊是給對象初始化,對象一 建立,就運行,優先於構造函數執行。構造函數給特定對象初始化,對象一建立,就會調用與之對應 的構 造函 數。構造代碼塊是給所有對象初始化,而構造函數是給對應對象初始化。