《.NET程序员面试秘笈》----面试题8 方法的重载和override有什么区别

    xiaoxiao2024-05-27  111

    本节书摘来自异步社区《.NET程序员面试秘笈》一书中的第1章,面试题8,作者: 张云翯, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

    面试题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方法也可重写,因为该方法是被重写过的。本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)