深入構造器

構造器用於創建類的實例,其最大的用處是創建對象時執行初始化。當創建一個對象時,系統爲這個對象的屬性進行默認初始化,把所有基本類型的屬性設爲0(對數值型屬性)或false(對布爾型屬性),把所有引用類型的屬性設置爲null。

注意:如果程序員沒有爲Java類提供任何構造器,系統會爲這個類提供一個無參數的構造器,這個構造器的執行體爲空,不做任何事。無論如何,Java類至少包含一個構造器。如果需要多個初始化過程,就需要提供多個構造器,也就形成了構造器重載。

例子:

public class ConstructorOverload
{
    public String name;
    public int count;
    //提供無參數的構造器
    public ConstructorOverload()
    {
    }
    //提供帶兩個參數的構造器,對該構造器返回的Java對象執行初始化
    public ConstructorOverload(String name,int count)
    {
        this.name=name;
        this.count=count;
    }
    public static void main(String[] args)
    {
        //通過無參數構造器創建ConstructorOverload對象
        ConstructorOverload oc1=new ConstructorOverload();
        //通過有參數構造器創建ConstructorOverload對象
        ConstructorOverload oc2=new ConstructorOverload("輕量級J2EE企業應用實戰",18000);
        System.out.println(oc1.name+" "+oc1.count);
        System.out.println(oc2.name+" "+oc2.count);
    }
}

如果系統中包含多個構造器,其中一個構造器執行體裏完全包含另一個構造器的執行體。則可以使用this關鍵字來調用相應構造器。

例子:

public class Apple
{
    public String name;
    public String color;
    public double weight;
    public Apple()
    {
    }
    //兩個參數的構造器
    public Apple(String name, String color)
    {
        this.name=name;
        this.color=color;
    }
    //三個參數的構造器
    public Apple(String name, String color, double weight)
    {
        //通過this調用另一個重載的構造器的初始化代碼
        this(name,color);
        this.weight=weight;
    }
}

注意:使用this調用另一個重載的構造器只能在構造器中使用,而且必須作爲構造器執行體的第一條語句。

摘自李剛《瘋狂Java講義》

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