面试题8 方法的重载和override有什么区别
.NET程序员面试秘笈
【考点】对类体内函数的深刻理解,对重载机制的应用,对override的理解。
【出现频率】
【解答】
方法的重载和重写容易被混淆,重载是方法的名称相同,函数签名不同,进行多次重载以适应不同的需要。而重写(override)是进行基类中函数的扩展或改写,其签名必须与被重写函数保持一致。
本例通过多种不同形式的构造函数创建实例,并输出初始化的结果。在ch01目录下新建一个程序文件,并命名为Override.cs,编写代码如程序1.9所示。
在命令行下编译Override.cs后,执行Override程序,其效果如图1.11所示。
本例的PC类中,以3种不同的参数列表声明了3个getmsg方法,甚至第3个getmsg方法调用了前2个方法。
【分析】
方法的重载一般指通过对类中同名函数使用不同的签名,以声明多个函数体。简单地说,给函数定义不同的参数个数或不同的参数类型,可以声明不同的同名函数(返回值也可以不同)。简单的函数重载(在类中即为方法重载)如以下代码所示:
访问修饰符 返回类型 函数名称(参数列表1)
{
函数体代码1;
}
访问修饰符 返回类型 函数名称(参数列表2)
{
函数体代码1;
}
以上代码声明了2个函数,虽然函数名相同,但函数的签名不同,所以可以视做2个不同的函数。程序中调用时,通过不同参数传递执行不同的函数。
而override方法被称为重写方法,即在派生类中将所继承的方法进行扩展或改写,要求重写后的方法签名与被重写的方法签名一致。派生类中只有继承的虚方法或抽象方法可以被重写,并且静态方法不能被重写。其使用方法如以下代码所示:
访问修饰符 返回类型 override 函数名称(参数列表)
{
函数体代码;
}
注意:
派生类所继承的非密封override方法也可重写,因为该方法是被重写过的。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
时间: 2024-10-31 23:55:36