C#-Grundwissenskompilierung: Grundwissen (5) Überladung von Methoden

黄舟
Freigeben: 2017-02-11 13:13:26
Original
1177 Leute haben es durchsucht

Lehrer haben alle diese Unterrichtsmethode. Ein Lehrer unterrichtete zunächst in einer abgelegenen Bergregion im Westen, indem er vor einer Holztafel im Klassenzimmer stand. Nach einigen Jahren mit guten Leistungen wurde er in ein etwas besseres versetzt Stadt und saß vor dem Klassenzimmer, um zu unterrichten. Ein paar Jahre später legte ich die Doktorprüfung ab, aber jetzt liege ich zu Hause und unterrichte vor dem Computer. Es handelt sich bei allen um Vorlesungsmethoden, und es gibt unterschiedliche Ausführungsprozesse und Ausgabeergebnisse unter unterschiedlichen Bedingungen (unterschiedliche Parameter). Das ist eine Überlastung.
Die Definition von Überladung lautet: In derselben Klasse oder in einer Unterklasse dieser Klasse gibt es mehrere Methoden mit demselben Namen, die jedoch überladen sind. Die Methode hat jedoch denselben Namen, aber die Parameterliste muss unterschiedlich sein . Im Falle einer Unterklasse verfügt die Unterklasse über eine Methode mit demselben Namen wie die Methode der übergeordneten Klasse, jedoch mit einer anderen Parameterliste, und die Methode mit diesem Namen in der übergeordneten Klasse muss geschützt und öffentlich sein.
Sehen Sie sich den folgenden Code an:
Nach der Aufnahmeprüfung für das College wurden mehrere Studenten an die Peking-Universität und die Tsinghua-Universität aufgenommen, sodass die Schule die Lehrer zum Abendessen in ein Fünf-Sterne-Hotel einlud. Wenn Sie Kunden an der Tür begrüßen, begrüßen Sie sie: Herr/Frau, herzlich willkommen!

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(@"女士,欢迎光临!");
        }
    }
}
Nach dem Login kopieren
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();
        }
    }
}
Nach dem Login kopieren

Ergebnis:

Betrachtet man den obigen Code, sind die Konstruktoren in YTeacher und YSchool überlastet.
Der Vorteil der Überladung besteht darin, dass die Logik klarer wird. Im obigen Code kann die Welcome-Methode beispielsweise tatsächlich eine Methode schreiben und dann if else oder switch-Anweisungen zur Beurteilung verwenden und schließlich das Ergebnis ausgeben. Aber wir schließen ein Projekt nicht nur ab, um eine bestimmte Funktion abzuschließen, sondern auch, um den Code gut lesbar, logisch klar und leicht zu warten zu machen. Daher müssen wir den Code logisch näher an die Logik der realen Welt anpassen. Die Verwendung von Überladung kann das Verständnis des Codes und die intuitiven Ausführungsschritte erleichtern.

Das Obige ist die Zusammenstellung der Grundkenntnisse von C#: Grundkenntnisse (5) Überladung von Methoden Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage