建構函式分為:
1.例項建構函式
2.私有建構函式
3.靜態建構函式
建構函式是一種特殊的方法,主要是為了給初始化物件賦初值。
1.例項建構函式
使用new
表示式建立某個類
的物件時,會使用例項建構函式建立和初始化所有例項成員變數。
public
class
programtest",
j);}static
void
main(
string
args)
結果為:i am programtest,4
在此次實驗中,我們首先定義了乙個私有成員j,經過初始化給他賦了乙個初值4,當我例項化類programtest時,就會執行例項建構函式。
諸如此類不帶引數的建構函式叫「預設建構函式」,
如果某個類沒有建構函式,則會自動生成乙個預設建構函式,並使用預設值來初始化物件字段。
public
class
programtest
", j);
}static
void
main(
string
args)
}結果為:i am programtest,0
也可以建立帶有引數的建構函式
public
class
programtest
,j="
,i, j);
}static
void
main(
string
args)
結果為:i am programtest i=1,j=2
那若是乙個類中既有無參建構函式,又有有參建構函式那會怎麼樣呢?
public
class
programtest
", j);
}public
programtest(
inti)
,j="
,i, j);
}static
void
main(
string
args)
結果為:i am programtest 預設建構函式 j=
3i am programtest 有參建構函式 i=1,j=2
可見,若是兩者同時存在,那麼看類例項化時,是怎麼例項的。
2.私有建構函式
私有建構函式是一種特殊的例項建構函式。
它通常用在只包含靜態成員的類中。
如果類具有乙個或多個私有建構函式而沒有公共建構函式,則其他類(除巢狀類外)無法建立該類的例項。
public
class
test
}public
class
programtest
", j);
}static
void
main(
string
args)}
結果:這時你會發現編譯器會提示你,你無法建立test的例項
(即使你在test類中新增乙個靜態成員,結果依然會提示
因為該建構函式受其保護級別的限制而不可訪問)
若是只在自己類裡有私有類呢?
public
class
programtest
", j);
}static
void
main(
string
args)}
結果:i am progranmtest 預設建構函式,j=3
注意,如果您不對建構函式使用訪問修飾符,則在預設情況下它仍為私有建構函式。
但是,通常顯式地使用private
修飾符來清楚地表明該類不能被例項化。
若是乙個類中既有
例項建構函式又有私有建構函式,那麼當例項物件是會怎麼執行呢?
public
class
test
", i);
}public
test(
inti)
", i);}}
public
class
programtest
", i);
}public
test(
inti)
", i);}}
public
class
programtest}
結果:i am test 有參建構函式 i=2
3.靜態建構函式
靜態建構函式用來初始化靜態變數,這個建構函式是屬於類的,而不是屬於哪個例項的。
就是說這個建構函式只會被執行一次。也就是在建立第乙個例項或引用任何靜態成員之前,由.net自動呼叫。
public
class
test
", i);}}
public
class
programtest}
結果為:i am test 預設建構函式 i=1
靜態建構函式的特點:
1.靜態建構函式既沒有訪問修飾符,也沒有引數。 2.
在建立第乙個例項或引用任何靜態成員之前,將自動呼叫靜態建構函式來初始化類,也就是無法直接呼叫靜態建構函式,也無法控制什麼時候執行靜態建構函式。
3.乙個類只能有乙個靜態建構函式,最多只能執行一次。
4.靜態建構函式不可以被繼承。
5.如果沒有靜態建構函式,而類中的靜態成員有初始值,那麼編譯器會自動生成預設的靜態建構函式。
如果靜態預設建構函式和公有預設建構函式同時存在,會怎麼樣呢?
public
class
test
", i);
}public
test()
", i);}}
public
class
programtest}
結果:i am test 靜態預設建構函式 i=1
i am test 公有預設建構函式 i=1
如果靜態預設建構函式和公有有參建構函式同時存在,我例項化類讓它呼叫靜態預設建構函式會怎麼樣呢?
public
class
test
", i);
}public
test(
intj)
", j);}}
public
class
programtest
", i);
}public
test(
intj)
", j);}}
public
class
programtest}
結果:i am test 靜態預設建構函式 i=1
i am test 公有有參建構函式 j=2
C 建構函式 拷貝建構函式
建構函式 class base private int m var 建構函式無返回值型別,函式名和型別相同。拷貝建構函式傳遞引數為引用。1 class base2 7 拷貝建構函式 8 base base ref m var ref m var 9 11 private 12 intm var 13...
C 構造器(建構函式)
定義和作用 構造器是在構建類的 引用時 自動執行的方法。所以,每個類都必須至少要有乙個構造器。在訪問乙個類的時候,編譯器最先執行構造器中的 它與類同名,帶引數的構造器能夠獲取引數,但是與方法不同的是 構造器雖然也是一種 例項型別 即必須通過例項來進行呼叫,也可以稱之為引用型別 但是卻不能返回任何值 ...
C 建構函式
建構函式是一種特殊的成員函式,它主要用於為物件分配儲存空間,對資料成員進行初始化.1 建構函式的名字必須與類同名 2 建構函式沒有返回型別,它可以帶引數,也可以不帶引數 3 建構函式的主要作用是完成對類的初始化工作 4 在建立乙個類的新物件 使用new關鍵字 時,系統回自動呼叫給類的建構函式初始化新...