overload 与 override
overload 常被翻译为 重载 ,override 常被翻译为 重写 或者 覆盖 。
重载的核心在于“ 一物多用 ”,而重写的核心在于“ 覆盖 ”。
重载一般分为 方法重载 和 运算符重载 ,其实运算符的本质也是方法。 让我们以方法重载为例,即 相同的方法名可以具有不同的参数列表 , 具体而言,不同的参数列表指参数的 类型 、 个数 、 顺序 不同。 请注意,方法重载的参数类型可能会出现 隐式类型转换 ,此时结果会产生混淆。
WARNING: 不能以方法的返回值来区分方法重载,原因很简单,有时我们是为了副作用而调用方法,这时会忽略其返回值。
在大多数 OOP 语言中,迫使语法支持方法重载这一特性的一个主要原因是构造器的出现,因为构造器的名字与类名相同, 要想有多个构造器,就必须用到方法重载。