在Java中,重载(overloading)和重写(overriding)是两个不同的概念,它们用于实现不同的代码行为。
重载
- 重载是指在同一个类中定义多个方法,这些方法具有相同的名称但具有不同的参数列表。
- 参数列表包括参数的数量、类型或者顺序。
- 重载方法可以有不同的返回类型,但不能仅仅依靠返回类型来区分。
- 编译器会根据方法的参数列表来确定调用哪个方法。
- 重载是静态绑定(编译时多态),因为在编译时就确定了要调用的方法。
- 示例
-
class Example { void method(int x) { // 方法1 } void method(int x, int y) { // 方法2 } }
重写
- 重写是指子类定义一个与父类方法签名完全相同的方法。
- 子类通过重写父类的方法来提供特定于子类的实现。
- 重写方法不能比父类方法具有更严格的访问修饰符,但可以比父类方法具有更宽松的访问修饰符。
- 重写方法是动态绑定(运行时多态),因为在运行时确定要调用的方法。
-
class Parent { void display() { System.out.println("Parent's display method"); } } class Child extends Parent { void display() { System.out.println("Child's display method"); } }
在运行时,如果调用
display()
方法的对象是子类的实例,那么将调用子类的display()
方法。