《.NET程序员面试秘笈》----面试题8 方法的重载和override有什么区别-阿里云开发者社区

开发者社区> 开发与运维> 正文

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

简介: 【考点】对类体内函数的深刻理解,对重载机制的应用,对override的理解。

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

面试题8 方法的重载和override有什么区别

.NET程序员面试秘笈
【考点】对类体内函数的深刻理解,对重载机制的应用,对override的理解。

【出现频率】

【解答】

方法的重载和重写容易被混淆,重载是方法的名称相同,函数签名不同,进行多次重载以适应不同的需要。而重写(override)是进行基类中函数的扩展或改写,其签名必须与被重写函数保持一致。

本例通过多种不同形式的构造函数创建实例,并输出初始化的结果。在ch01目录下新建一个程序文件,并命名为Override.cs,编写代码如程序1.9所示。

image

image

在命令行下编译Override.cs后,执行Override程序,其效果如图1.11所示。

本例的PC类中,以3种不同的参数列表声明了3个getmsg方法,甚至第3个getmsg方法调用了前2个方法。

image

【分析】

方法的重载一般指通过对类中同名函数使用不同的签名,以声明多个函数体。简单地说,给函数定义不同的参数个数或不同的参数类型,可以声明不同的同名函数(返回值也可以不同)。简单的函数重载(在类中即为方法重载)如以下代码所示:

访问修饰符 返回类型 函数名称(参数列表1)
{
  函数体代码1;
}
访问修饰符 返回类型 函数名称(参数列表2)
{
  函数体代码1;
}

以上代码声明了2个函数,虽然函数名相同,但函数的签名不同,所以可以视做2个不同的函数。程序中调用时,通过不同参数传递执行不同的函数。

而override方法被称为重写方法,即在派生类中将所继承的方法进行扩展或改写,要求重写后的方法签名与被重写的方法签名一致。派生类中只有继承的虚方法或抽象方法可以被重写,并且静态方法不能被重写。其使用方法如以下代码所示:

访问修饰符 返回类型 override 函数名称(参数列表)
{
 函数体代码;
}

注意:
派生类所继承的非密封override方法也可重写,因为该方法是被重写过的。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章