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

相关文章
|
8月前
|
人工智能 前端开发 Java
Java 面试资料中相关代码使用方法与组件封装方法解析
这是一份详尽的Java面试资料代码指南,涵盖使用方法与组件封装技巧。内容包括环境准备(JDK 8+、Maven/Gradle)、核心类示例(问题管理、学习进度跟踪)、Web应用部署(Spring Boot、前端框架)、单元测试及API封装。通过问题库管理、数据访问组件、学习进度服务和REST接口等模块化设计,帮助开发者高效组织与复用功能,同时支持扩展如用户认证、AI推荐等功能。适用于Java核心技术学习与面试备考,提升编程与设计能力。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
177 6
Java 面试资料中相关代码使用方法与组件封装方法解析
|
10月前
|
存储 算法 架构师
阿里面试:PS+PO、CMS、G1、ZGC区别在哪?什么是卡表、记忆集、联合表?问懵了,尼恩来一个 图解+秒懂+史上最全的答案
阿里面试:PS+PO、CMS、G1、ZGC区别在哪?什么是卡表、记忆集、联合表?问懵了,尼恩来一个 图解+秒懂+史上最全的答案
|
10月前
|
人工智能 算法 数据库
美团面试:LLM大模型存在哪些问题?RAG 优化有哪些方法?_
美团面试:LLM大模型存在哪些问题?RAG 优化有哪些方法?_
|
Java 程序员 调度
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
546 9
|
安全 Java 程序员
Java面试必问!run() 和 start() 方法到底有啥区别?
在多线程编程中,run和 start方法常常让开发者感到困惑。为什么调用 start 才能启动线程,而直接调用 run只是普通方法调用?这篇文章将通过一个简单的例子,详细解析这两者的区别,帮助你在面试中脱颖而出,理解多线程背后的机制和原理。
727 12
|
编译器 Android开发 开发者
Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
Lambda表达式和匿名函数都是Kotlin中强大的特性,帮助开发者编写简洁而高效的代码。理解它们的区别和适用场景,有助于选择最合适的方式来解决问题。希望本文的详细讲解和示例能够帮助你在Kotlin开发中更好地运用这些特性。
351 9
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
今日分享的主题是如何区分&和&&的区别,提高自身面试的能力。主要分为以下四部分。 1、自我面试经历 2、&amp和&amp&amp的不同之处 3、&对&&的不同用回答逻辑解释 4、彩蛋
|
缓存 安全 Java
【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)
单例模式下,“饿汉模式”,“懒汉模式”,单例模式下引起的线程安全问题,解锁思路和解决方法
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?

热门文章

最新文章