你的位置:首页 > 软件开发 > ASP.net > [.net 面向对象编程基础] 面向对象三大特性——多态

[.net 面向对象编程基础] 面向对象三大特性——多态

发布时间:2015-06-07 00:00:04
[.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态。比起前面的封装和继承,多态这个概念不是那么好理解。我们还是从 ...

[.net get='_blank'>面向对象编程基础] (13) 面向对象三大特性——多态

      前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态。比起前面的封装和继承,多态这个概念不是那么好理解。我们还是从一个事例开始:

      公司最近为了陶冶情操,养了几种动物(Animal),有猫(Cat)、狗(Dog)、羊(Sheep),这些动物都有共同的特性,会吃(Eat)、会叫(Shout),但是它们吃的不同,叫的也不同。既然这样,我们能不能设计一个动物类(Animal)和它的成员(Eat方法、Shout方法)来表示这些动物的共同特征,而当我们关注猫时,猫来实现这两个成员(吃鱼、喵喵叫);当我们关注狗时,狗来实现这两个成员(吃肉和汪汪叫)。

1.什么是多态?

上述例子就是一个典型的多态,就是父类的一些成员,子类继承后去重写从而实现不同的功能。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。这就是多态,这种特性称为多态性。

2.多态的分类

多态性分为两种,一种是编译时的多态性,一种是运行时的多态性。

编译时的多态性:编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。

运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中运行时的多态性是通过覆写虚成员实现。 

3.多态的实现

  我们知道多态有两种,一种是编译时通过重载实现,另一种是运行时,通过重写或叫覆写来实现,那么如何实现他们?

3.1编译时多态:重载(overload)

重载(overload):重载指的是同一个类中有两个或多个名字相同但是参数不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。

注意:

A.从重载的定义来看,重载是一种编译时多态

B.重载不需要事先定义可重载的方法,即没有关键字

C.重载只是针对一个类内部的几个参数不同,名称相同的方法。

我们还在本节开篇那几只陶冶情操的动物来示例说明,代码如下:

 1 /// <summary> 2 /// 狗(多态:重载事例) 3 /// </summary> 4 class Dog 5 { 6   /// <summary> 7   /// 叫 8   /// </summary> 9   public void Shout()10   {11     Console.WriteLine("汪!");12   }13 14   /// <summary>15   /// 叫(重载方法)16   /// </summary>17   public void ShoutCount(int count)18   {19     int i = 0;20     string shout = "";21     do22     {23       shout += "汪!";24       i++;25     } while (i <= count);26     Console.WriteLine(shout);27   }28 }
 <如果对你有帮助,记得点一下推荐哦,有不明白的地方或写的不对的地方,请多交流>

原标题:[.net 面向对象编程基础] 面向对象三大特性——多态

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。