java 構造函式

構造函式是一種特殊的函式。其主要功能是用來在創建對象時初始化對象, 即為對象成員變數賦初始值,總與new運算符一起使用在創建對象的語句中。構造函式與類名相同,可重載多個不同的構造函式。在JAVA語言中,構造函式與C++語言中的構造函式相同,JAVA語言中普遍稱之為構造方法。

名詞解釋

一般我們講的“函式”就是“方法”;

構造函式=構造方法;

有些地方還將它稱為構造子、構造器。

一般情況下,我們叫它構造函式或者構造方法。

特點

構造方法是一種特殊的方法,具有以下特點。

(1)構造方法的方法名必須與類名相同。

(2)構造方法沒有返回值類型,可以有return,但是不能有返回值,在這裡只是表示結束,並不是返回的表示,一般也不使用return。

(3)構造方法的主要作用是完成對象的初始化工作,它能夠把定義對象時的參數傳給對象的域。

(4)一個類可以定義多個構造方法,如果在定義類時沒有定義構造方法,則編譯系統會自動插入一個無參數的默認構造方法,這個構造方法不執行任何代碼。

(5)構造方法可以重載,以參數的個數,類型,順序。

構造函式的調用

java構造函式的調用問題//不能繼承

(1)子類只調用父類的默認(預設)構造函式,即無形參構造函式。如果父類沒有默認構造函式,那子類不能從父類調用默認構造函式。

(2)子類從父類處調用父類默認構造函式,不能成為子類的默認構造函式。

(3)在創建對象時,先調用父類默認構造函式對對象進行初始化,然後調用子類自身自己定義的構造函式。

(4)如果子類想調用父類的非默認構造函式,則必須使用super來實現。

(5)子類必須調用父類的構造函式。可以通過系統自動調用父類的默認構造函式,如果父類沒有默認構造函式時,子類構造函式必須通過super調用父類的構造函式。

執行過程

java 構造函式的執行過程

類初始化時構造函式調用順序:

(1)初始化對象的存儲空間為零或null值;

(2)調用父類構造函式;

(3)按順序分別調用類成員變數和實例成員變數的初始化表達式;

class Dollar {

Money m = new Money();

Rmb r = new Rmb();

public Dollar() {

System.out.println("Dollar is constructor.");

}

public static void main(String[] args) {

new Dollar();

}

}

class Money {

public Money() {

System.out.println("Money is constructor.");

}

}

class Rmb {

public Rmb() {

System.out.println("RMB is constructor.");

}

}

輸出結果:

Money is constructor.

RMB is constructor.

Dollar is constructor.

不同之處

JAVA 與C#構造函式執行順序的不同之處

public static void main(String[] args)

{

Child child = new Child();

}

}

class Parent

{

Parent()

{

System.out.println("to construct Parent.");

}

}

class Child extends Parent

{

Child()

{

System.out.println("to construct Child.");

}

Delegatee delegatee = new Delegatee();

}

class Delegatee

{

Delegatee()

{

System.out.println("to construct Delegatee.");

namespace ConsoleApplication1

{

public class Test

{

public static void Main(String[] args)

{

Child child = new Child();

}

}

class Parent

{

public Parent()

{

Console.WriteLine("to construct parent");

}

}

class{

public Child()

{

Console.WriteLine("to construct Child.");

}

Delegatee delegatee = new Delegatee();

}

class Delegatee

{

public Delegatee()

{

Console.WriteLine("to construct Delegatee.");

}

}

}

結果是

to construct Delegatee.

to construct Child.

to construct Parent.

相關詞條

相關搜尋

熱門詞條

聯絡我們