`
zhangziyangup
  • 浏览: 1078346 次
文章分类
社区版块
存档分类
最新评论

C#基础知识整理:基础知识(5) 方法的重载

 
阅读更多

老师都有讲课这个方法,一个老师先是在西部偏远山区,是站在教室里木头的黑板前讲课;过了几年表现好,调到了稍微好点的城市里,是坐在教室前用多媒体设备讲课;又过了几年考博士了,毕业后继续当老师,不过现在是躺在家里对着电脑远程授课。都是讲课这个方法,不同的条件下(参数不同)有不同的执行过程和输出结果。这就是重载。
重载的定义是:在同一个类中 ,或者是这个类的子类中,有若干个同名的方法就是重载,不过方法同名但是参数列表必须不同。在子类的情况就是,子类有和父类方法名相同但参数列表不同的方法,而且父类的该名字的方法必须为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语句来判断,最后输出结果。但是我们完成一个工程不光是为了完成某个功能,还要让代码可读性强,逻辑明确,易于维护,所以就要让代码在逻辑上更接近于现实世界的逻辑。使用重载能让代码更好理解,执行步骤也很直观。
代码下载:http://download.csdn.net/detail/yysyangyangyangshan/4393502

分享到:
评论

相关推荐

    C#知识总结基础篇(基础知识全面总结)

    对于C#中的数据类型、去处符、类、接口、多态、继承、重载、流程控制、命名规则等基础知识进行了精炼的总结归纳,肯定对你有用的。

    广工C#实验,实践C#语言基础知识及控制台应用程序开发,

    (2) 实践C#语言基础知识及控制台应用程序开发 (3) 掌握Visual C#.NET类的创建(成员,方法,属性),类的继承,类的多态性及类的方法的重载。 1.3 实验内容 题目: 基于控制台应用程序,设计一个二叉树的实验工具,...

    C#基础教程

    本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。当然仅靠一章的内容就完全掌握C#语言是不可能的,如需进一步学习C#语言...

    Visual C# 2010程序设计教程(教程PPT+源代码)

     《高等学校计算机应用规划教材:Visual C# 2010程序设计教程》详细介绍了Visual C# 2010程序设计的基础知识、基本方法和应用技巧,共分14章,主要内容包括.NET平台与Visual Studio 2010开发环境、C#语言基础及面向...

    C#.Net的常见面试试题

    C#.Net的常见面试试题 &lt;br/&gt; 1.面向对象的思想主要包括什么? &lt;br/&gt;2.什么是ASP.net中的用户控件 &lt;br/&gt;3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?...

    C#宝典 美国计算机宝典丛书.part6

    第1部分 C#语言基础知识 第1章 C#概述 第2章 编写第一个C#程序 第3章 变量的使用 第4章 表达式 第5章 控制代码的流程 第6章 方法 第7章 使用结构组合数据 第2部分 利用C#进行面向...

    C#程序设计

    在本书中,著名的技术作家Jesse Liberty以一种最适合有经验的程序员口味的方式--紧扣Microsoft全新.NET平台的大背景本书的第一部分介绍了C#的基础知识,进而阐释了以下内容:类与对象、继承与多态、操作符重载、...

    C#宝典 美国计算机宝典丛书.part5

    第1部分 C#语言基础知识 第1章 C#概述 第2章 编写第一个C#程序 第3章 变量的使用 第4章 表达式 第5章 控制代码的流程 第6章 方法 第7章 使用结构组合数据 第2部分 利用C#进行面向...

    轻松学C#(图解版)

    第二篇是面向对象基础篇,主要介绍类、对象、字段、方法、流程控制、数组、继承、属性、运算符重载、接口等C#基本内容。第三篇是应用技术篇,主要介绍的是异常处理、文件和流、委托、事件、Lambda表达式、命名空间、...

    C#.Net基础7 基础入门知识 函数 范例 ppt

    5、方法的重载 概念:方法的重载指的就是方法的名称相同给,但是参数不同。 参数不同,分为两种情况 1)、如果参数的个数相同,那么参数的类型就不能相同。 2)、如果参数的类型相同,那么参数的个数就不能相同。 ***...

    Visual C# 2008大学教程(第3版).pdf

    《Visual C# 2008大学教程(第3版)(英文版)》:基础知识 NET 3、5、类型、数组、LINQ to Objects I/O、控制语句、运算符 方法、属性、重载 字符串、正则表达式 异常、文件、流、调试器 新的语言特性 LINQ、对象/...

    C# 使用方法 入门教程

    第2章 C#基础.... 23 2.1 引言...... 23 2.2 第一个C#程序...... 23 2.2.1 代码..... 24 2.2.2 编译并运行程序..... 24 2.2.3 详细介绍..... 25 2.3 变量........ 27 2.3.1 变量的初始化..... 27 2.3.2 变量的作用域...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    《C#开发实例大全(基础卷)》筛选、汇集了C#开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。全书分6篇共25章,主要...

    C#宝典 美国计算机宝典丛书.part8

    第1部分 C#语言基础知识 第1章 C#概述 第2章 编写第一个C#程序 第3章 变量的使用 第4章 表达式 第5章 控制代码的流程 第6章 方法 第7章 使用结构组合数据 第2部分 利用C#进行面向...

    C#宝典 美国计算机宝典丛书.part7

    第1部分 C#语言基础知识 第1章 C#概述 第2章 编写第一个C#程序 第3章 变量的使用 第4章 表达式 第5章 控制代码的流程 第6章 方法 第7章 使用结构组合数据 第2部分 利用C#进行面向...

    C#宝典 美国计算机宝典丛书.part3

    第1部分 C#语言基础知识 第1章 C#概述 第2章 编写第一个C#程序 第3章 变量的使用 第4章 表达式 第5章 控制代码的流程 第6章 方法 第7章 使用结构组合数据 第2部分 利用C#进行面向...

    C#宝典 美国计算机宝典丛书.part2

    第1部分 C#语言基础知识 第1章 C#概述 第2章 编写第一个C#程序 第3章 变量的使用 第4章 表达式 第5章 控制代码的流程 第6章 方法 第7章 使用结构组合数据 第2部分 利用C#进行面向...

    C#宝典 美国计算机宝典丛书.part4

    第1部分 C#语言基础知识 第1章 C#概述 第2章 编写第一个C#程序 第3章 变量的使用 第4章 表达式 第5章 控制代码的流程 第6章 方法 第7章 使用结构组合数据 第2部分 利用C#进行面向...

    C#宝典 美国计算机宝典丛书.part1

    第1部分 C#语言基础知识 第1章 C#概述 第2章 编写第一个C#程序 第3章 变量的使用 第4章 表达式 第5章 控制代码的流程 第6章 方法 第7章 使用结构组合数据 第2部分 利用C#进行面向...

Global site tag (gtag.js) - Google Analytics