Teachers all have this method of lecturing. A teacher first taught in a remote mountainous area in the west by standing in front of a wooden blackboard in the classroom. After a few years of good performance, he was transferred to a slightly better city and sat in front of the classroom. I use multimedia equipment to teach. A few years later, I took the Ph.D. exam. After graduation, I continued to work as a teacher, but now I lie at home and teach remotely in front of the computer. They are all lecture methods, and there are different execution processes and output results under different conditions (different parameters). This is overloading.
The definition of overloading is: in the same class, or in a subclass of this class, there are several methods with the same name, which are overloaded. However, the method has the same name but the parameter list must be different. In the case of a subclass, the subclass has a method with the same name as the parent class method but a different parameter list, and the method with this name in the parent class must be protected and public.
Look at the code below:
After the college entrance examination, several students were admitted to Peking University and Tsinghua University, so the school invited the teachers to have dinner in a five-star hotel. When greeting customers at the door, greet them: Mr./Ms., welcome!
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(); } } }
Result:
Looking at the above code, the constructors in YTeacher and YSchool are overloaded.
The advantage of overloading is that it can make the logic clearer. For example, in the above code, the Welcome method can actually write a method, and then use if else or switch statements to judge, and finally output the result. But we complete a project not only to complete a certain function, but also to make the code highly readable, clear in logic, and easy to maintain. Therefore, we must make the code logically closer to the logic of the real world. Using overloading can make the code easier to understand and the execution steps intuitive.
The above is the compilation of C# basic knowledge: basic knowledge (5) method overloading. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!