概念:函數
構造函數是一種特殊的方法,主要用來在建立對象時初始化對象。this
構造函數的重載:特別的一個類能夠有多個構造函數,可根據其參數個數的不一樣或參數類型的不一樣,來區分它們。spa
重載:同一個類裏面,方法名稱相同,方法參數列表不一樣(參數的類型,個數),與參數的返回值類型無關。code
注意:對象
|
構造函數blog |
通常方法繼承 |
命名ci |
命名必須和類名徹底一致。編譯器 |
不能和類名相同。string |
功能 |
初始化對象賦初值。 沒有返回值;不能用void修飾。 |
根據方法而定。 必須有返回值類型。 |
調用 |
不能直接調用,必須經過new運算符建立對象時纔會自動調用。 |
程序執行到它的時候調用。 |
默認存在 |
存在默認構造函數(不帶參數)。 |
不存在。 |
定義:
class A
{
public A(){}//不帶參數的構造函數,又名默認構造函數。
public A(int a ){}//帶參數的構造函數。
//當二者同時存在時,看類是如何實例化的。
private A(int a ){}//私有構造函數
}
使用:
A a=new A();或者A a=new A(7);
注意:若是類裏面沒有定義構造函數,編譯器會自動生產一個空構造函數,類的各個成員都賦上默認值。
構造函數分:實例構造函數、私有構造函數、靜態構造函數。
(1)實例構造函數
using System; class Point { public double x, y; public Point() { this.x = 0; this.y = 0; } public Point(double x, double y) { this.x = x; this.y = y; } } class Test { static void Main() { Point a = new Point(); Point b = new Point(3, 4); // 用構造函數初始化對象 } }
(2)私有構造函數
一般用在只包含靜態成員的類中,若是類只有私有構造函數而沒有公共構造函數,則其餘類(除嵌套類外)沒法建立該類的實例。
注意,默認狀況下屬性爲private。
(3)靜態構造函數
1.靜態構造函數既沒有訪問修飾符,也沒有參數,靜態構造函數不能夠被繼承。
2.一個類只能有一個靜態構造函數,最多隻能運行一次。
3.在建立第一個實例或引用任何靜態成員以前,將自動調用靜態構造函數來初始化類,也就是沒法直接調用靜態構造函數,也沒法控制何時執行靜態構造函數。
4.若是沒有靜態構造函數,而類中的靜態成員有初始值,那麼編譯器會自動生成默認的靜態構造函數。
using System; class test{ public class person { static string sex; static person() { sex = "woman"; Console.WriteLine("靜態析構函數:"+sex); } } public class student { static void Mian(String[] args) { person p = new person();
Console.Read();
}
}
}