構(gòu)造方法是在創(chuàng)建類的實(shí)例時(shí)負(fù)責(zé)初始化工作的操作方法。在C#中,類的構(gòu)造方法一般被定義為公有的(public),構(gòu)造方法沒(méi)有返回類型,也不能為空型(void),同時(shí),構(gòu)造方法的名稱與類的名稱相同;類的構(gòu)造方法可以包含任何數(shù)量的參數(shù),從而使創(chuàng)建類變得更為靈活。
在面向?qū)ο蟪绦蛟O(shè)計(jì)中,將具有相同名稱,但參數(shù)的數(shù)據(jù)類型、參數(shù)個(gè)數(shù)不同的方法稱為方法的重載。構(gòu)造方法通過(guò)改變參數(shù)的數(shù)據(jù)類型、參數(shù)的個(gè)數(shù)同樣可以實(shí)現(xiàn)重載。
下面舉一個(gè)例子來(lái)說(shuō)明這個(gè)問(wèn)題:
這個(gè)例子演示了一個(gè)教師類(Teacher),該類具有兩個(gè)字段成員_name(教師姓名)和_age(教師年齡),類的三個(gè)構(gòu)造方法分別分別在給出不同參數(shù)時(shí)給這兩個(gè)成員字段賦值的方法。
本類同時(shí)重寫(xiě)了ToString方法,使其能夠輸出教師的相關(guān)信息。在測(cè)試類TestClass中演示了該類的使用形式。
下面是具體的源代碼:
using System;
class Teacher
{
string _name;
int _age;
public Teacher() //無(wú)參的構(gòu)造方法
{
_name = "無(wú)名氏"; _age = -1;
}
public Teacher(string sName) //一個(gè)參數(shù)的構(gòu)造方法:給出教師姓名
{
_name = sName; _age = -1;
}
public Teacher(string sName, int iAge) //兩個(gè)參數(shù)的構(gòu)造方法:給出教師姓名和教師年齡
{
_name = sName; _age = iAge;
}
public override string ToString()
{
return "姓名:" + _name + ",年齡:" + (_age == -1 ? "不詳" : _age.ToString());
}
}
class TestClass //測(cè)試類
{
static void Main() //主方法
{
Teacher t1 = new Teacher(); //使用無(wú)參的構(gòu)造方法構(gòu)造實(shí)例
Console.WriteLine(t1.ToString());
Teacher t2 = new Teacher("劉濤"); //使用一個(gè)參數(shù)的構(gòu)造方法構(gòu)造實(shí)例
Console.WriteLine(t2.ToString());
Teacher t3 = new Teacher("王濤", 23); //使用兩個(gè)參數(shù)的構(gòu)造方法構(gòu)造實(shí)例
Console.WriteLine(t3.ToString());
}
}
程序運(yùn)行結(jié)果如下圖所示:
重載類的構(gòu)造方法運(yùn)行結(jié)果圖
新聞熱點(diǎn)
疑難解答
圖片精選