现在的位置: 首页 > 编程语言 > 正文

C#中的多态性概念

2019年12月23日 编程语言 ⁄ 共 813字 ⁄ 字号 评论关闭

  相信大家都对面向对象的三个特征封装、继承、多态很熟悉,每个人都能说上一两句,但是大多数都仅仅是知道这些是什么,不知道CLR内部是如何实现的,所以本篇文章主要说说多态性中的一些概念已经内部实现的机理。

多态的概念

  首先解释下什么叫多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。换句话说,实际上就是同一个类型的实例调用"相同"的方法,产生的结果是不同的。这里的"相同"打上双引号是因为这里的相同的方法仅仅是看上去相同的方法,实际上它们调用的方法是不同的。

  说到多态,我们不能免俗的提到下面几个概念:重载、重写、虚方法、抽象方法以及隐藏方法。下面就来一一介绍他们的概念。

  1、重载(overload):在同一个作用域(一般指一个类)的两个或多个方法函数名相同,参数列表不同的方法叫做重载,它们有三个特点(俗称两必须一可以):

  方法名必须相同

  参数列表必须不相同

  返回值类型可以不相同

  例如:

  publicvoidSleep()

  {

  Console.WriteLine("Animal睡觉");

  }

  publicintSleep(inttime)

  {

  Console.WriteLine("Animal{0}点睡觉",time);

  returntime;

  }

  2、重写(override):子类中为满足自己的需要来重复定义某个方法的不同实现,需要用override关键字,被重写的方法必须是虚方法,用的是virtual关键字。它的特点是(三个相同):

  相同的方法名

  相同的参数列表

  相同的返回值

  3、虚方法:即为基类中定义的允许在派生类中重写的方法,使用virtual关键字定义。如:

  publicvirtualvoidEatFood()

  {

  Console.WriteLine("Animal吃东西");

  }

  注意:虚方法也可以被直接调用。

抱歉!评论已关闭.