生活随笔
收集整理的這篇文章主要介紹了
C#基础知识整理:基础知识(5) 方法的重载
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
??? 老師都有講課這個(gè)方法,一個(gè)老師先是在西部偏遠(yuǎn)山區(qū),是站在教室里木頭的黑板前講課;過(guò)了幾年表現(xiàn)好,調(diào)到了稍微好點(diǎn)的城市里,是坐在教室前用多媒體設(shè)備講課;又過(guò)了幾年考博士了,畢業(yè)后繼續(xù)當(dāng)老師,不過(guò)現(xiàn)在是躺在家里對(duì)著電腦遠(yuǎn)程授課。都是講課這個(gè)方法,不同的條件下(參數(shù)不同)有不同的執(zhí)行過(guò)程和輸出結(jié)果。這就是重載。
重載的定義是:在同一個(gè)類中 ,或者是這個(gè)類的子類中,有若干個(gè)同名的方法就是重載,不過(guò)方法同名但是參數(shù)列表必須不同。在子類的情況就是,子類有和父類方法名相同但參數(shù)列表不同的方法,而且父類的該名字的方法必須為protected和public型的。
看下面代碼:
??? 學(xué)校高考完后,有好幾個(gè)被北大和清華錄取了,于是學(xué)校請(qǐng)老師去五星級(jí)酒店吃飯。門(mén)迎見(jiàn)到顧客光臨,要稱呼:男士/女士,歡迎光臨!
using System; namespace YYS.CSharpStudy.MainConsole { public class YSchool { private int id = 0; private string name = string.Empty; public int ID { get { return this.id; } } public string Name { get { return name; } } public YSchool() { this.id = 0; this.name = @"清華大學(xué)附中"; } public YSchool(int id, string name) { this.id = id; this.name = name; } /// <summary> /// 構(gòu)造器 /// </summary> public YSchool(int id) { this.id = id; this.name = @"陜師大附中"; } } public class YTeacher { private int id = 0; private string name = string.Empty; private YSchool school = null; private string introDuction = string.Empty; private string imagePath = string.Empty; public int ID { get { return id; } } public string Name { get { return name; } } public YSchool School { get { if (school == null) { school = new YSchool(); } return school; } set { school = value; } } public string IntroDuction { get { return introDuction; } set { introDuction = value; } } public string ImagePath { get { return imagePath; } set { imagePath = value; } } /// <summary> /// 構(gòu)造器 /// </summary> public YTeacher(int id, string name) { this.id = id; this.name = name; } /// <summary> /// 構(gòu)造器 /// </summary> public YTeacher(int id, string name, YSchool school) { this.id = id; this.name = name; this.school = school; } /// <summary> /// 給學(xué)生講課的方法 /// </summary> public void ToTeachStudents() { Console.WriteLine(string.Format(@"{0} 老師教育同學(xué)們: Good Good Study,Day Day Up!", this.name)); } /// <summary> /// 懲罰犯錯(cuò)誤學(xué)生的方法 /// </summary> /// <param name="punishmentContent"></param> public void PunishmentStudents(string punishmentContent) { Console.WriteLine(string.Format(@"{0} 的{1} 老師讓犯錯(cuò)誤的學(xué)生 {2}。", this.School.Name, this.name, punishmentContent)); } } public class MrTeacher : YTeacher { public MrTeacher(int id, string name) : base(id, name) { } /// <summary> /// 擴(kuò)展的方法,刮胡子方法。 /// </summary> public void Shave() { Console.WriteLine(string.Format(@"{0} 老師用飛科剃須刀刮胡子。",this.Name)); } } public class MisTeacher : YTeacher { public MisTeacher(int id, string name) : base(id, name) { } /// <summary> /// 擴(kuò)展方法,護(hù)膚的方法 /// </summary> public void SkinCare() { Console.WriteLine(string.Format(@"{0} 老師用香奈兒護(hù)膚霜護(hù)膚。", this.Name)); } } public class FiveStarsHotel { /// <summary> /// 重載 /// </summary> public void Welcome(MrTeacher mTeacher) { Console.WriteLine(@"先生,歡迎光臨!"); } /// <summary> /// 重載 /// </summary> public void Welcome(MisTeacher misTeacher) { Console.WriteLine(@"女士,歡迎光臨!"); } } }using System; namespace YYS.CSharpStudy.MainConsole { class Program { static void Main(string[] args) { FiveStarsHotel hotel = new FiveStarsHotel(); MrTeacher mrTeacher = new MrTeacher(1, @"牛轟轟"); Console.WriteLine(@"牛轟轟 來(lái)了"); hotel.Welcome(mrTeacher);//男老師進(jìn)門(mén) MisTeacher misTeacher = new MisTeacher(2, @"郝漂靚"); Console.WriteLine(@"郝漂靚 來(lái)了"); hotel.Welcome(misTeacher);//女老師進(jìn)門(mén) Console.ReadKey(); } } }
結(jié)果:
?
?? 看上面的代碼中,YTeacher,YSchool中的構(gòu)造器就是重載的運(yùn)用。
??? 重載的好處是可以讓邏輯更明確,比如上述代碼中,Welcome方法其實(shí)也可以寫(xiě)一個(gè)方法,然后使用if else或者switch語(yǔ)句來(lái)判斷,最后輸出結(jié)果。但是我們完成一個(gè)工程不光是為了完成某個(gè)功能,還要讓代碼可讀性強(qiáng),邏輯明確,易于維護(hù),所以就要讓代碼在邏輯上更接近于現(xiàn)實(shí)世界的邏輯。使用重載能讓代碼更好理解,執(zhí)行步驟也很直觀。
代碼下載:http://download.csdn.net/detail/yysyangyangyangshan/4393502
總結(jié)
以上是生活随笔為你收集整理的C#基础知识整理:基础知识(5) 方法的重载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。