起初接触到这个名词的时候,是在看C++看到的,里边写的概念还是比较好理解的。但是这次看到了C#中关于多态的视频的时候,讲的我是云里雾里的。脑子里除了雾还是雾。不过还好,有个大神,还有巨人的帮助。让我渐渐扒开雾层,重见光明。
多态就是同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果。这就是多态性。同时要多态性是通过派生类覆写基类中的虚函数型方法来实现的。
说到这里,就不得不说一下重载和覆写。
什么是重载呢?就是一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
比如说:
public void ZhuGuo()
{
this.Guo="空气";
}
public void ZhuGuo(string tie)
{
this. Guo=tie;
}
这个例子就是,比如我是个铸锅匠,不管是铁锅还是铝锅都会铸,顾客拿来铁可以铸铁锅,拿来铝可以铸铝锅,什么都没带来就用空气来给他铸个空气锅。这样一样的方法,但是所带来的材料(方法的参数不同),就会出现 不同的结果。这样重载就可以使功能扩展。
什么是重写呢?重写顾名思义,是重新设计了方法的实现,这个“重新设计”的基础是方法名和参数完全一致,但是内部实现体不一样。重写一般发生在父类和子类之间,一般父类定义一个虚方法或抽象方法,子类根据具体情况“重写”其中的实现。
比如:形状都有大小,圆和方都属于形状。他们都有各自的大小。通过重写可以得到他们各自的大小。
先定义一个抽象类——shape ,其中GetSide(得到图形大小)是一个虚方法。
abstract public class shape
{
abstract public int GetSide();
}
如果要是想得到圆的大小,就要重新写一下GetSide这个方法,来得到圆的大小
public class 圆 : shape
{
public override int GetSide()
{
return 1;
}
}
public class 方 : shape
{
public override int GetSide()
{
return 2;
}
}
这样我们就可以使用同一种方法,来实现不同的效果(功能),这样就是面向对象设计的多态性。多态性就是父类使用子类的方法,通过声明父类实例化子类。就像一个父亲拥有好几个儿子,他们都会演奏,当要求父亲开一场演奏会的时候,父亲就会下达演奏这个命令,各个儿子根据自己的情况,演奏不同的乐器,这样就构成了一场完美的演奏会,完成了父亲的任务。
知识来源于生活。