overload、override、overwrite的区别
时间: 2024-01-31 20:02:33 浏览: 158
1. Overload(重载):指在同一个作用域内,通过函数名相同但参数列表不同,实现多个函数的定义。在调用时,根据传入的参数类型和数量的不同,自动匹配对应的函数进行调用。
2. Override(重写):指在子类中实现与父类中同名同参数列表的函数,以覆盖父类中的同名函数,实现多态的功能。
3. Overwrite(覆盖):指在同一个文件、同一个函数作用域内,重新定义同名的函数,覆盖之前的定义。这种行为会导致之前的定义无效,不推荐使用。
相关问题
override overwrite和overload
### Java中的Override、Overwrite和Overload
#### Override方法
在面向对象编程中,`override`是指子类重新定义父类的方法。这允许子类提供特定实现来替代继承自父类的行为。为了成功覆盖一个方法,在子类中声明的方法签名(包括名称、参数列表以及返回类型)应当与父类中的被重写方法相匹配。
```java
class Animal {
public void makeSound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark bark!");
}
}
```
上述例子展示了如何通过使用`@Override`注解来指示编译器该方法意在覆盖超类中的同名方法[^1]。
#### Overload方法
不同于`override`,`overload`发生在同一个类内部,当多个具有相同名字但是不同参数列表的方法存在时即发生过载。这意味着这些方法可以有不同的数量或类型的输入参数,甚至它们的顺序也可以不一样;然而,返回值类型并不影响是否构成重载的一部分条件之一。
```java
public class Calculator {
int add(int a, int b){
return a+b;
}
double add(double a,double b){
return a+b;
}
float add(float a,float b,int c){
return a+b+c;
}
}
```
此代码片段说明了一个名为`add()`函数的不同版本是如何在同一类内共存并根据调用时传递给它的实参自动选择最合适的那个版本执行[^2]。
#### 关于Overwrite概念
值得注意的是,“overwrite”并不是Java官方术语,通常指的是文件操作里的一种行为——新数据会替换旧有位置上的内容而不增加额外存储空间。但在讨论OOP特性时不常用到这个词。如果提到它,则可能指代错误地隐藏了基类成员变量或方法而不是正式意义上的多态机制下的合法覆写过程。
override和overwrite和overload
这三个词都与方法(函数)有关:
1. Override(覆盖)指的是在子类中重新定义(覆盖)父类中的方法。子类中的方法与父类中的方法具有相同的名称、参数列表和返回类型。当子类对象调用该方法时,会优先调用子类中的方法,而不是父类中的方法。
2. Overwrite(重写)是指在同一类中重新定义(覆盖)已有的方法。在同一类中,我们可以重新定义已有的方法,使其具有不同的行为。这个过程也被称为方法的重载(overload)。
3. Overload(重载)是指在同一类中定义多个方法,它们具有相同的名称但参数列表不同。在调用这个方法时,编译器会根据传递给方法的参数类型和数量来判断应该调用哪个方法。
总之,Override指的是子类重写了父类的方法,Overwrite指的是同一类中重新定义了已有的方法,而Overload指的是在同一类中定义了多个方法,它们具有相同的名称但参数列表不同。
阅读全文
相关推荐














