选择一个最佳函数成员来实施调用

时间:2021-10-26 07:58:11

本文实例总结了C#中多态、重载与重写的观点与区别。对付初学C#的伴侣来说有不错的参考价值。分享给大家供大家参考。具体分析如下:


重写



是指重写基类的要领,在基类中的要领必需有修饰符virtual,而在子类的要领中必需指明override

格局如下:

1.在基类中:

public virtual void myMethod() { }

2.在子类中:

public override void myMethod() { }

重写以后,用基类东西和子类东西访谒myMethod()要领,功效都是访谒在子类中从头界说的要领,,基类的要领相当于被笼罩失了。


重载:


用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施挪用


public void test(int x,int y){} public void test(int x,ref int y){} public void test(int x,int y,string a){}


重载的特征:

I.

要领名必需不异

II.

参数列表必需不不异,与参数列表的挨次无关

III.

返回值类型可以不不异


但如果有泛型,就要注意了!


多态:


c#的多态性主要表此刻类的担任上

:

子类担任父类的时候,可能呈现同名但要领界说差此外情况,

所以在子类中会将原要领笼罩,实现自身的要求.


需要注意的处所有两点:

①.可以在子类中被重写的要领必然要被符号成virtual(虚拟), abstract(抽象), override(重写)符号为virtual 和abstract 的函数就是为了重写而创建的,符号为override的函数自己是由前两种函数重写而来的,所以它可以被重写也是顺理成章的了;

②.重写的函数必需在子类中呈现,而且任何一个父类的函数在其一个子类中只能被重写一次。(这一点很好理解,当你要重写两次时,该子类中将界说两个返回类型,要领名称 和参数列表都不异的函数,这必定是不成能的)。