一、多态性意味着有多重形式。

在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace PolymorphismApplication
{
/// <summary>
/// 几何图形,抽象基类
/// </summary>
abstract class Geometric
{
public abstract double Area();
} /// <summary>
/// 正方形
/// </summary>
class Square : Geometric
{
private double side;
public Square(double a = )
{
side = a;
}
public override double Area()
{
Console.WriteLine("Square 类的面积:");
return (side * side);
}
}
/// <summary>
/// 长方形
/// </summary>
class Rectangle : Geometric
{
private double length;
private double width;
public Rectangle(double a = , double b = )
{
length = a;
width = b;
}
public override double Area()
{
Console.WriteLine("Rectangle 类的面积:");
return (width * length);
}
}
/// <summary>
/// 圆型
/// </summary>
class Circle : Geometric
{
private double r;
public Circle(double a = )
{
r = a;
}
public override double Area()
{
Console.WriteLine("Circle 类的面积:");
return (3.14*r*r);
}
} class Program
{
static void Main(string[] args)
{
Square s = new Square();
double sa = s.Area();
Console.WriteLine("面积: {0}", sa);
Rectangle r = new Rectangle(, );
double ra = r.Area();
Console.WriteLine("面积: {0}", ra);
Circle c = new Circle();
double ca = c.Area();
Console.WriteLine("面积: {0}", ca);
Console.ReadKey();
}
}
}

抽象基类Geometric中定义了抽象方法Area public abstract double Area();

不同的子类继承了基类Geometric,分别实现了Area(),但是正方形和长方形和圆型的Area()又不相同。这就是多态性。

二、重载

重载是指具有相同的函数名词,但是参数类型,个数不相同。

举个例子

编程实现两个整数相加

public static int IntPlusInt(int a, int b)
{
return a + b;
}

没有问题,再写个double类型和double类型相加

public static double DoublePlusDouble(double a, double b)
{
return a + b;
}

doub 和int相加:

public static double DoublePlusInt(double a, int b)
{
return a + b;
} public static double IntPlusDouble(int a, double b)
{
return a + b;
}

就这样,简单的int和double类型的相加就需要4个方法。

你在计算时还得想一下,int类型相加的方法名称是什么。

重载,可以使得上面的事情变得简单:

public static int Plus(int a, int b)
{
return a + b;
} public static double Plus(double a, double b)
{
return a + b;
} public static double Plus(double a, int b)
{
return a + b;
} public static double Plus(int a, double b)
{
return a + b;
}

方法名称全都是Plus,不需要起很多名字,方便使用。调用时,vs会根据变量类型自动匹配到相应的方法。

附全部代码

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Overload
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1+2=" + IntPlusInt(, ));
Console.WriteLine("1.1+2.2=" + DoublePlusDouble(1.1, 2.2));
Console.WriteLine("1.1+2=" + DoublePlusInt(1.1, ));
Console.WriteLine("1+2.2=" + IntPlusDouble(, 2.2)); Console.WriteLine("1+2=" + Plus(, ));
Console.WriteLine("1.1+2.2=" + Plus(1.1, 2.2));
Console.WriteLine("1.1+2=" + Plus(1.1, ));
Console.WriteLine("1+2.2=" + Plus(, 2.2)); Console.ReadKey();
} #region 不使用重载
public static int IntPlusInt(int a, int b)
{
return a + b;
} public static double DoublePlusDouble(double a, double b)
{
return a + b;
} public static double DoublePlusInt(double a, int b)
{
return a + b;
} public static double IntPlusDouble(int a, double b)
{
return a + b;
}
#endregion #region 使用重载
public static int Plus(int a, int b)
{
return a + b;
} public static double Plus(double a, double b)
{
return a + b;
} public static double Plus(double a, int b)
{
return a + b;
} public static double Plus(int a, double b)
{
return a + b;
}
#endregion
}
}

最新文章

  1. Python之路----------迭代器
  2. (转)R空间数据处理与可视化
  3. Javascript中document.execCommand()的用法
  4. Codeforces Round #354 (Div. 2)-B
  5. Java 多线程间的通讯
  6. C# 查处出现次数最多的元素
  7. 完美高仿精仿京东商城手机客户端android版源码
  8. 转载:遍历Map的四种方法
  9. 绘图quartz之加水印
  10. linux系统如何限制其他用户登录
  11. 3644 - X-Plosives(水题,并差集)
  12. VS2013使用技巧汇总
  13. JS键盘事件对象之keyCode、charCode、which属性对比
  14. day15
  15. 7.8 paint.c 程序
  16. 实现自己的HashMap
  17. 自己总结的C#编码规范--2.命名选择篇
  18. linux-2.6.26内核中ARM中断实现详解(转)
  19. Spring MVC 数据绑定和表单标签库
  20. 如何安全的下载Devcon.exe文件

热门文章

  1. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #12 使用Memory Cgroup限制内存使用量
  2. Pthreads n 体问题
  3. 如何连接并处理 sdf 数据库文件(便捷数据库处理)
  4. X264编码流程详解(转)
  5. SSH中将hibernate托管给spring获取session的方法
  6. 若(p,q)=1,则(p^n,q^n)=1
  7. 使用Git将码云上的代码Clone至本地
  8. Kafka命令行常用命令说明
  9. PhpStorm (强大的PHP开发环境)2017.3.2 附注册方法
  10. 用MapReduce读HBase写MongoDB样例