overload 与 override 的区别?
#
// 1. 方法重载(同一个类中)
class Calculator {
// 重载1:两个int相加
public int add(int a, int b) {
return a + b;
}
// 重载2:三个int相加(参数个数不同)
public int add(int a, int b, int c) {
return a + b + c;
}
// 重载3:两个double相加(参数类型不同)
public double add(double a, double b) {
return a + b;
}
}
// 2. 方法重写(子类与父类之间)
class Animal {
public void move() {
System.out.println("动物在移动");
}
}
class Dog extends Animal {
// 重写父类move方法
@Override
public void move() {
System.out.println("狗在跑步");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 4. 注意事项
- 重载与返回值类型、访问修饰符无关,仅与方法名和参数列表有关;
- 重写需加
@Override注解(可选),用于编译时校验,避免写错方法名 / 参数; - 静态方法不能重写(可隐藏,即子类定义同名静态方法,但不构成重写),但可以重载。
#
上次更新: 12/30/2025