C#基礎知識整理:基礎知識(5) 方法的重載

來源:互聯網
上載者:User
老師都有講課這個方法,一個老師先是在西部偏遠山區,是站在教室裡木頭的黑板前講課;過了幾年表現好,調到了稍微好點的城市裡,是坐在教室前用多媒體裝置講課;又過了幾年考博士了,畢業後繼續當老師,不過現在是躺在家裡對著電腦遠程授課。都是講課這個方法,不同的條件下(參數不同)有不同的執行過程和輸出結果。這就是重載。
重載的定義是:在同一個類中 ,或者是這個類的子類中,有若干個同名的方法就是重載,不過方法同名但是參數列表必須不同。在子類的情況就是,子類有和父類方法名相同但參數列表不同的方法,而且父類的該名字的方法必須為protected和public型的。
看下面代碼:
學校高考完後,有好幾個被北大和清華錄取了,於是學校請老師去五星級酒店吃飯。門迎見到顧客光臨,要稱呼:男士/女士,歡迎光臨!

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 = @"清華大學附中";        }        public  YSchool(int id, string name)        {            this.id = id;            this.name = name;        }        /// <summary>        /// 構造器        /// </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>        /// 構造器        /// </summary>        public YTeacher(int id, string name)        {            this.id = id;            this.name = name;        }        /// <summary>        /// 構造器        /// </summary>        public YTeacher(int id, string name, YSchool school)        {            this.id = id;            this.name = name;            this.school = school;        }        /// <summary>        /// 給學生講課的方法        /// </summary>        public void ToTeachStudents()        {            Console.WriteLine(string.Format(@"{0} 老師教育同學們: Good Good Study,Day Day Up!", this.name));        }        /// <summary>        /// 懲罰犯錯誤學生的方法        /// </summary>        /// <param name="punishmentContent"></param>        public void PunishmentStudents(string punishmentContent)        {            Console.WriteLine(string.Format(@"{0} 的{1} 老師讓犯錯誤的學生 {2}。", this.School.Name, this.name, punishmentContent));        }    }    public class MrTeacher : YTeacher    {        public MrTeacher(int id, string name)            : base(id, name)        {        }        /// <summary>        /// 擴充的方法,刮鬍子方法。        /// </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>        /// 擴充方法,護膚的方法        /// </summary>        public void SkinCare()        {            Console.WriteLine(string.Format(@"{0} 老師用香奈兒護膚霜護膚。", 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(@"牛轟轟 來了");            hotel.Welcome(mrTeacher);//男老師進門            MisTeacher misTeacher = new MisTeacher(2, @"郝漂靚");            Console.WriteLine(@"郝漂靚 來了");                        hotel.Welcome(misTeacher);//女老師進門            Console.ReadKey();        }    }}

結果:

看上面的代碼中,YTeacher,YSchool中的構造器就是重載的運用。
重載的好處是可以讓邏輯更明確,比如上述代碼中,Welcome方法其實也可以寫一個方法,然後使用if else或者switch語句來判斷,最後輸出結果。但是我們完成一個工程不光是為了完成某個功能,還要讓代碼可讀性強,邏輯明確,易於維護,所以就要讓代碼在邏輯上更接近於現實世界的邏輯。使用重載能讓代碼更好理解,執行步驟也很直觀。

以上就是C#基礎知識整理:基礎知識(5) 方法的重載的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.