java中子类重写父类的default方法后如何调用重写前的方法
时间: 2024-12-12 16:32:37 浏览: 22
在Java中,如果子类重写了父类的`default`方法(即`abstract`修饰的方法),实际上它并没有改变该方法的基本签名,因为默认方法在所有子类中都可见。这意味着你可以直接通过父类引用调用未被重写的方法,就像没发生过修改一样。
例如:
```java
class Parent {
default void defaultMethod() {
System.out.println("Parent's default method");
}
}
class Child extends Parent {
@Override
default void defaultMethod() {
super.defaultMethod(); // 调用父类的defaultMethod()
System.out.println("Child's overridden method");
}
}
public class Main {
public static void main(String[] args) {
Parent parent = new Child();
parent.defaultMethod(); // 输出 "Parent's default method" 和 "Child's overridden method"
}
}
```
在这个例子中,尽管`Child`重写了`defaultMethod()`,但是通过`parent`调用它会先执行父类的版本,然后才是子类自己的实现。这是多态的一个特性,允许你在运行时选择合适的实现。
阅读全文