函数重载和函数重写是面向对象编程(OOP)中的两个重要概念。函数重载允许我们创建多个具有相同名称但参数不同的函数。而函数重写则允许子类(或派生类)为已在父类(或超类)中定义的方法提供具体的实现。
接下来,我们将一起探讨以下几个主题:
目录
- 什么是函数重载?
- 什么是函数重写?
- JavaScript 中函数重载与函数重写的区别
什么是函数重载?
函数重载是指创建多个具有相同名称但参数不同的函数的能力。然而,与 C++ 或 Java 等语言不同,JavaScript 并不原生支持函数重载。相反,我们可以通过一些变通方法来实现类似的效果,例如在单个函数定义内部检查参数的数量和类型。
示例: 在下面的示例中,display 函数根据其参数的类型表现出不同的行为。
function display(value) {
if (typeof value === ‘number‘) {
console.log("Number: " + value);
} else if (typeof value === ‘string‘) {
console.log("String: " + value);
}
}
display(32);
display("Hello");
输出
Number: 32
String: Hello
什么是函数重写?
当子类(或派生类)为已在父类(或超类)中定义的方法提供具体实现时,就会发生函数重写。这使得子类能够根据自身需求定制该方法。在 JavaScript 中,函数重写允许子类为已在父类中定义的方法提供特定的实现。这使得子类能够展示继承方法的行为,且该行为可由子类本身进行操纵。
示例: INLINECODE2dd5457f 类重写了 INLINECODE058d4adf 类的 INLINECODEb29005c2 方法。当我们调用 INLINECODE156aee62 实例的 INLINECODE11f8ce0e 方法时,执行的是 INLINECODE6b00d115 类中被重写的方法。
class Parent {
display() {
console.log("Display method from Parent class");
}
}
class Child extends Parent {
display() {
console.log("Display method from Child class");
}
}
let obj = new Child();
obj.display();
输出
Display method from Child class
函数重载
:—
多个具有相同名称但参数不同的函数。
JavaScript 中不支持原生实现,需通过变通方法来实现。
允许函数处理不同类型或数量的参数。
在同一个函数内处理不同的参数类型。
由于需要手动检查参数,可能会增加复杂性。