老师都有讲课这个方法,一个老师先是在西部偏远山区,是站在教室里木头的黑板前讲课;过了几年表现好,调到了稍微好点的城市里,是坐在教室前用多媒体设备讲课;又过了几年考博士了,毕业后继续当老师,不过现在是躺在家里对着电脑远程授课。都是讲课这个方法,不同的条件下(参数不同)有不同的执行过程和输出结果。这就是重载。
重载的定义是:在同一个类中 ,或者是这个类的子类中,有若干个同名的方法就是重载,不过方法同名但是参数列表必须不同。在子类的情况就是,子类有和父类方法名相同但参数列表不同的方法,而且父类的该名字的方法必须为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#的核心概念和关键知识点。 01c#基础知识.pdf涵盖了以下几个方面: 1. **变量与数据类型**:在C#中,变量用于存储数据,数据类型定义了变量可以存储的数据种类,如...
本教程旨在为初学者提供C#的基础知识,帮助他们快速入门并掌握这一强大的编程工具。 一、C#语言基础 1. 变量与数据类型:C#支持多种数据类型,包括基本类型(如int、double、bool)和引用类型(如类、接口、数组)...
1. **C#基础概述** - **语法结构**:C#具有清晰的语法,类似于C++和Java,支持类、接口、继承、多态等面向对象特性。 - **变量与数据类型**:包括基本类型(如int、double、bool)和引用类型(如类、接口、数组)...
以下是对"C#基础知识"的详细阐述: 1. **变量与数据类型**:C#中的基本数据类型包括整型(int, byte, short, long)、浮点型(float, double)、字符型(char)、布尔型(bool)等。变量是存储数据的容器,声明变量...
本资源包含的"C#基础知识PPT"提供了对C#入门学习者极具价值的信息。 1. **变量与数据类型**:在C#中,变量是存储数据的容器,每个变量都有特定的数据类型,如整型(int)、浮点型(float)、字符型(char)和布尔型...
C#是一种面向对象的编程语言,由微软开发,...以上是C#基础的概览,涵盖了类型系统、内存管理、类和对象、继承与接口、方法等关键概念。深入学习C#还需要了解更多的特性,如属性、事件、异常处理、泛型、异步编程等。
【C#基础知识】 C#(读作"C sharp")是一种面向对象的编程语言,由微软公司为.NET框架开发。它的设计目标是提供一种简洁、类型安全、高效且现代的编程语言,用于构建Windows桌面应用程序、Web应用程序以及移动平台...
作为初学者或想要巩固基础知识的学习者,了解C#的基础知识至关重要。以下是一些核心的C#知识点,这些内容可能在提供的PDF学习资料中有所涵盖: 1. **C#语法基础**:包括变量声明、数据类型(如整型、浮点型、字符串...
本课件"C#基础知识课件PPT2"作为"C#基础知识课件PPT1"的延续,旨在进一步深入讲解C#编程的关键知识点。以下是可能包含的部分内容: 1. **变量与数据类型**:在C#中,变量用于存储数据,而数据类型定义了变量可以...
以上只是C#基础知识的一部分,实际学习过程中,还需要了解更多的高级特性,如委托、事件、匿名方法、Lambda表达式、匿名类型、动态类型、扩展方法、元数据等。C#是一个不断发展和演进的语言,随着.NET Core的推出,...
C#基础知识概论涵盖了语言的基本元素、数据类型、控制结构、函数、类和对象等核心概念。 1. **基本语法与数据类型**: - C#语法与C++和Java类似,具有严格的类型检查。它支持多种数据类型,包括基本类型(如整型、...
【C#语言的基础知识】 C#(发音为“C sharp”)是由微软公司为.NET框架设计的一种现代化、面向对象的编程语言。C#语言旨在提供一种简洁、类型安全且性能高效的编程体验,同时减少程序员在处理低级细节时的负担。它...
C#语言程序设计基础知识是IT领域中不可或缺的一部分,它为开发者提供了一种高效且安全的编程工具。C#,由微软公司开发,旨在融合Visual Basic的易用性和C++的性能,是一种现代化、面向对象的编程语言。C#的设计目标...
C#是一种由微软开发的现代、面向对象的编程语言,它是.NET框架的核心组成部分。C#的设计目标是提高代码的简洁性和可维护性,同时...学习C#的基础知识是掌握.NET开发的关键步骤,为进一步深入学习和应用打下坚实的基础。
C#基础知识 C#是一种现代、高效、可靠的面向对象的编程语言,它由Microsoft公司开发,于2000年首次发布。C#语言具有以下特点: 1.现代化:C#语言是基于现代的编程思想和技术,具有很高的可读性和可维护性。 2....
一、C#基础语法 1. 变量和数据类型:C#有多种内置数据类型,如整型(int、byte等)、浮点型(float、double)、字符型(char)、布尔型(bool)以及字符串型(string)。变量在声明时必须指定数据类型,并遵循强类型...
总结来说,C#.NET基础知识涵盖了.NET Framework的结构、C#的数据类型和内存管理、方法的重载与覆盖、多态性以及委托和事件。理解并掌握这些知识对于C#开发者至关重要,它们构成了编写高效、安全、可维护的C#代码的...
### C#基础知识、关键概念详解 #### 一、C#简介 C#(发音为“See Sharp”)是一种现代编程语言,它具有面向对象和类型安全的特点。C#旨在帮助开发者构建安全可靠的各类应用程序,这些应用程序可在.NET平台上运行。...
在C#的基础知识点中,我们涵盖了语法、数据类型、控制流、函数、类与对象、继承、多态性、接口、异常处理、泛型、集合、委托与事件等多个核心概念。 1. **语法基础**:C#的语法结构清晰,类似Java,以分号作为语句...