You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术咨询:判断给定代码属于重载(overloading)还是重写(overriding)

这既不是合法的重载,也不属于重写

嘿,咱们先把重载和重写的核心规则理清楚,再拆解这个例子:

先明确两个概念的核心区别

  • 重载(Overloading):必须发生在同一个类中,函数名相同,但参数列表(参数的类型、数量、顺序)必须存在差异。划重点:返回值类型不参与重载的判定——就算返回值不一样,只要参数列表完全相同,就不算合法的重载。
  • 重写(Overriding):是子类与父类之间的行为——子类重新实现父类中已有的方法,要求参数列表必须完全一致,返回值要么和父类方法相同,要么是父类返回值的子类(协变返回值),同时还要满足访问修饰符、异常抛出等配套规则。

回到你的代码例子

你给出的两个函数定义:

int a(int n1, int n2);
float a(int n1, int n2);

它们的参数列表完全一致(都是两个int类型参数),仅返回值不同。在Java、C++这类静态类型语言中,这样的写法是语法错误——编译器根本无法通过调用上下文判断你要执行哪个版本的函数(比如写a(1,2);时,编译器没法确定该返回int还是float)。

另外,这段代码也没有涉及父类子类的继承关系,完全和重写的适用场景不沾边。

总结一下:这两行代码既不是合法的重载,也不属于重写,它们本身就是不符合语法规则的函数定义。

内容的提问来源于stack exchange,提问作者Arvind Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:16:38