1. 程式人生 > >Java中類的構造方法

Java中類的構造方法

擴展 這樣的 實例化 構造函數 中文 編譯器 new對象 const 一個

constructor;構造函數。

在創建對象的時候,對象成員可以由構造函數方法進行初始化。

new對象時,都是用構造方法進行實例化的;
例如;Test test = new Test("a");
 //Test("a");其中這個就是構造函數,“a”為構造方法的形參;

構造方法的方法名必須與類名一樣。
構造方法沒有返回類型,也不能定義為void,在方法名前面不聲明方法類型。
構造方法不能作用是完成對象的初始化工作,他能夠把定義對象時的參數傳遞給對象的域。
構造方法不能由編程人員調用,而要系統調用。
構造方法可以重載,以參數的個數,類型,或排序順序區分。

具體用法,代碼實現。

1;單個構造函數方法;’
技術分享圖片


技術分享圖片
技術分享圖片

2;多個構造函數方法
(例子為;帶參數與不帶參數)
技術分享圖片
技術分享圖片
技術分享圖片

3;關於繼承類的構造方法的調用;
先看事例;
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
我第一次看到結果的時候好驚訝的,怎麽都調用了哈。看了知識點才知道。
在Subtine的主方法中只調用子類構造方法,實例化子類對象並且在子類構造方法中,沒有調用父類的構造方法的任何語句。但是在實例化對象時,它相應的調用了父類構造方法,在結果中還可以看到調用構造方法的順序,首先是頂級,再繼續往下直達本身類。也就是說實例化子類的時候,要首先實例化父類對象,然後在實例化子類對象,所以在子類構造方法調用父類構造方法前,父類已經實例化了。
拓展一下。

package text_4_1;

public class Parent {
    Parent(int a){//就是將無參數構造方法改成有參數的。
        System.out.println("調用父類Parent構造方法" + a);
    }
}

package text_4_1;

public class Subparent extends Parent{
    Subparent(){
        System.out.println("調用子類Subparent的構造方法");
    }
}

package text_4_1;

public class Subtine extends Subparent{
    Subtine(){
        System.out.println("調用子類Subtine構造方法");
    }
}


package text_4_1;

public class Main {
    public static void main(String[] args){
        Subtine subtine = new Subtine();
    }
}

  

這樣的代碼將會報錯;//就是將父類Parent類無參數構造方法改成有參數的。

Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//隱式的超級構造函數()是未定義的。必須顯式地調用另一個構造函數 

意思就是在子類調用構造函數時,必須先調用父類構造函數,因為無參數的構造函數,編譯器會自動調用,也就是第一種情況不會報錯。但是有參數的,就必須要利用Super的方法來調用。如果不進行調用那麽將會報錯。

將Subparent類改成。
package text_4_1;

public class Subparent extends Parent{
    Subparent(){
        super(5);//調用了其父類就不會報錯了。
        System.out.println("調用子類Subparent的構造方法");
    }
}
//備註一下,調用父類構造方法就是;super();//就ok了。

還補充一點,關於構造方法的可擴展性;
查看過源碼的應該都發現過jdk的編碼人員會在一個類中建立多個構造方法;然而他的作用就是提高可擴展性;
技術分享圖片
這麽多構造方法,他們之間並且還有聯系;通過this()來調用自己類的其他構造方法,來減少代碼的復制,增大程序的可讀性;
技術分享圖片
至於怎麽來進行封裝;舉個例子;
技術分享圖片
技術分享圖片
構造方法的可擴展性就表示在這裏;
可以多多個構造方法;根據不同的參數決定調用哪個;帶來很大的可擴展性
剛試了一下notepad++;然而直接爆出中文亂碼,搞了好久才搞清楚;
技術分享圖片

原因是;國標碼和ANSI之間的不兼容;
技術分享圖片

因為剛學,有什麽不足的後期補上。
望路過的大神,指點一二。

Java中類的構造方法