目录
- public static int add(int x, int y) {
- return x + y;
- }
-
- public static double add(double x, double y) {
- return x + y;
- }
-
- public static double add(double x, double y, double z) {
- return x + y + z;
- }
创建两个类, B 是父类, D 是子类. D 中重写 func 方法. 并且在 B 的构造方法中调用 func
- class B {
- public B() {
- // do nothing
- func();
- }
-
- public void func() {
- System.out.println("B.func()");
- }
- }
-
- class D extends B {
- private int num = 1;
- @Override
- public void func() {
- System.out.println("D.func() " + num);
- }
- }
-
- public class Test {
- public static void main(String[] args) {
- D d = new D();
- }
- }
- // 执行结果
- D.func() 0
构造 D 对象的同时, 会调用 B 的构造方法。
B 的构造方法中调用了 func 方法, 此时会触发动态绑定, 会调用到 D 中的 func。
| 区别点 | 重写(override) | 重载 |
| 参数列表 | 不能修改 | 必须修改 |
| 返回类型 | 不能修改(除非可以构成父子类关系) | 可以修改(不做要求) |
| 访问限定符 | 子类的访问权限大于等于父类的访问权限 | 可以修 |

方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现 。