MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Overload、Override、Overwrite的介绍?

2025-01-11 13:35 huorong 精选文章 3 ℃ 0 评论

【死记硬背】

(1)overload(重载),即函数重载:

①在同一个类中;

②函数名字相同;

③函数参数不同(类型不同、数量不同,两者满足其一即可);

④不以返回值类型不同作为函数重载的条件。

(2)override(覆盖,子类改写父类的虚函数),用于实现C++中多态:

①分别位于父类和子类中;

②子类改写父类中的virtual方法;

③与父类中的函数原型相同。

(3)overwrite(重写或叫隐藏,子类改写父类的非虚函数,从而屏蔽父类函数):

①与overload类似,但是范围不同,是子类改写父类;

②与override类似,但是父类中的方法不是虚函数。

【答案解析】

Overload(重载)

概念:重载指的是在同一个作用域内(通常是同一个类中),可以有多个同名的方法,但是这些方法的参数列表必须不同(参数个数、类型或者顺序不同)。方法的返回类型不影响重载。重载允许函数或方法名称复用,提供了函数调用的灵活性。

应用:通过重载,可以根据不同的输入参数调用相应版本的函数,实现不同的逻辑处理。

支持语言特性:几乎所有的面向对象编程语言都支持方法重载,包括Java、C++等。

Override(重写)

概念:重写发生在继承关系中,子类重新定义了父类中的某个方法。重写的方法名、参数列表必须与父类中的被重写方法完全相同,返回类型需兼容(在Java中要求相同或为子类)。访问权限不能比父类中被重写的方法更严格。

应用:重写主要用于实现多态性,允许子类根据自身需求改变父类行为,增加代码的灵活性和可维护性。

支持语言特性:支持面向对象编程的语言普遍支持重写,如Java、C#等。

Overwrite(覆写)

概念:在某些上下文中,“覆写”可能被用来非正式地指代“重写”(Override),尤其是在一些特定领域或较早的文献中。但在现代编程讨论中,"overwrite"更多时候不是一个标准术语,容易引起混淆。正确的术语应该是Override。

澄清:在一些非标准或特定的上下文中,如果提到"overwrite",可能是指错误地或不恰当地修改了已有代码或数据,但这并不是面向对象编程中的一个规范概念。

注意:避免使用“overwrite”来描述面向对象编程中的方法替换行为,以免与重写(Override)混淆。正确的表述应该使用Override来特指子类中改变父类方法行为的情况。

【温馨提示】

点赞+收藏文章,关注我并私信回复【面试题解析】,即可100%免费领取楼主的所有面试题资料!

Tags:cp overwrite

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言