浅谈c#多态性
多态就是同一个方法在不同的类中有不同的实现体.包括方法重载和覆盖。
方法的重载:
private int xxx(int xx);
private int xxx(string xx);
private int xxx(string xx);
方法覆盖:
class Draw
{
public vitual void draw()
{
Console.Write("我是画的基类...");}
}
class Circle:Draw
{
public override void draw()
{
Console.Write("我是画的子类...圆形");}
}
class Square:Draw
{
public override void draw()
{
Console.Write("我是画的子类...正方形形");}
}
//Circle Square都是Draw的子类,三个类都有draw()方法,但是各自的实现内容却不一样,此为多态体现之一也.
{
public vitual void draw()
{
Console.Write("我是画的基类...");}
}
class Circle:Draw
{
public override void draw()
{
Console.Write("我是画的子类...圆形");}
}
class Square:Draw
{
public override void draw()
{
Console.Write("我是画的子类...正方形形");}
}
//Circle Square都是Draw的子类,三个类都有draw()方法,但是各自的实现内容却不一样,此为多态体现之一也.
多态 是面向对象里的术语
一门语言要能称的上是面向对象的语言,那么必然要有多态的特性,所以C#也有多态性,那么C++,Java也都有.
那么多态可以分为静态多态和动态多态
静态多态的体现 也就是方法重载,由编译器在编译期间将真正该执行的方法的地址确定.
动态多态的体现 就是虚方法的Override,是在运行期间由运行时根据虚方法表动态计算出真正该执行方法的地址(不同的语言有不同的具体实现方式),所以动态的动态是会有一定的性能影响(不过对于现在的PC来讲,这个影响基本可忽略掉)
多态性很重要吗?
可以说没有多态就没有面向对象,特别是运行时多态,为程序的扩展提供了切入点.
没有多态就没有框架设计,也就没有.net framework.
所有的设计模式也都是基于多态特性来实