前言本節主要來學習下例項建構函式、私有建構函式和靜態建構函式。
建構函式的作用:
1、當乙個類在new例項化物件時,可呼叫建構函式進行初始化物件。
2、不帶引數的建構函式稱為「預設建構函式」。
無論何時,只要使用 new
運算子例項化物件,並且不為 new
提供任何引數,就會呼叫預設建構函式。除非類是static的,否則 c# 編譯 器將為無建構函式的類提供乙個公共的預設建構函式,以便該類可以例項化。
3、通過將建構函式設定為私有建構函式可以阻止類被例項化。
4、結構型別的建構函式與類的建構函式類似,但是 structs 不能包含顯式預設建構函式,因為編譯器將自動提供乙個建構函式。此建構函式會將struct中的每個字段初始化為預設值。 只有當 struct 用 new 例項化時,才會呼叫此預設建構函式。
例項建構函式
使用 new 表示式建立某個類的物件時,會使用例項建構函式建立和初始化所有例項成員變數。 要初始化靜態類或非靜態類中的靜態變數,必須定義靜態建構函式。
class只要建立基於 coords 類的物件,就會呼叫此例項建構函式。coords
}
諸如此類不帶引數的建構函式稱為「預設建構函式」。
然而,提供其他建構函式通常十分有用。
例如,可以向 coords 類新增建構函式,以便可以為資料成員指定初始值:
public coords(int x, int這樣便可以用預設或特定的初始值建立y)
coord
物件,如下所示:
coords p1 = new如果某個類沒有建構函式,則會自動生成乙個預設建構函式,並使用預設值來初始化物件字段。coords();
coords p2 = new coords(5, 3);
也可以用例項建構函式來呼叫基類的例項建構函式。
類建構函式可通過初始值設定項來呼叫基類的建構函式,如下所示:
abstract在此示例中,class
shape
public
abstract
double
area();
}class
circle : shape
public
override
double
area()
}
circle
類將表示半徑和高度的值傳遞給
shape
(circle
從它派生而來)提供的建構函式。
私有建構函式
私有建構函式是一種特殊的例項建構函式。
它通常用在只包含靜態成員的類中。
如果類具有乙個或多個私有建構函式而沒有公共建構函式,則其他類(除巢狀類外)無法建立該類的例項。
例如:
class宣告空建構函式可阻止自動生成預設建構函式。 注意,如果您不對建構函式使用訪問修飾符,則在預設情況下它仍為私有建構函式。 但是,通常顯式地使用 private 修飾符來清楚地表明該類不能被例項化。nlog
public
static
double e = math.e; //
2.71828...
}
當沒有例項欄位或例項方法(如 math 類)時或者當呼叫方法以獲得類的例項時,私有建構函式可用於阻止建立類的例項。 如果類中的所有方法都是靜態的,可考慮使整個類成為靜態的。
下面是使用私有建構函式的類的示例:
public注意,如果您取消注釋該示例中的以下語句,它將生成乙個錯誤,因為該建構函式受其保護級別的限制而不可訪問:class
counter
public
static
intcurrentcount;
public
static
intincrementcount()
}class
testcounter
", counter.currentcount);
console.writeline(
"press any key to exit.");
console.readkey();}}
//靜態建構函式counter acounter = new counter();
//error
靜態建構函式用於初始化任何 靜態 資料,或用於執行僅需執行一次的特定操作。 在建立第乙個例項或引用任何靜態成員之前,將自動呼叫靜態建構函式。
class靜態建構函式具有以下特點:******class
}
c 基礎知識 建構函式的用法
類的建構函式是類的乙個特殊的成員函式,當建立類的新物件時執行。建構函式的名稱與類的名稱完全相同,它沒有任何返回型別。下面的例項說明了建構函式的概念 using system namespace public void setlength double len public double getlen...
PHP基礎知識建構函式
php基礎知識建構函式 created by phpstorm.user administrator date 2016 7 16 0016 time 15 05 header content type text html charset utf 8 class site 析構函式 public f...
java基礎知識之建構函式
子父類中的建構函式。在對子類物件進行初始化時,父類的建構函式也會執行,那是因為子類的建構函式預設第一行有一條隱式的語句 super super 會訪問父類中空引數的建構函式。而且子類中所有的建構函式預設第一行都是super 為什麼子類一定要訪問父類中的建構函式。因為父類中的資料子類可以直接獲取。所以...