[英]Calling parent method using child class object in Java
有没有办法使用子类对象调用被子类覆盖的父类方法? 我知道您可以在重写的方法中使用 super.foo() 将调用重定向到父类方法,但是有没有一种方法不涉及在调用父方法之前先进入子类方法?
不。
如果调用类Child
的对象来执行x()
,那么在 Java 中,它的类 ( Child
) 负责提供正确的实现。 因此, Child
类始终负责,并且在服务x()
调用的过程中是否调用其父类方法由Child
类唯一决定。
如果您发现子类实现不适合为x()
调用提供服务的情况,那么这是Child.x()
方法实现的一个错误,您必须修复该实现才能正确地为调用提供服务。
如果对于某些给定的调用参数,子类不能告诉如何正确地为调用提供服务,那么该方法的设计(作为调用者和被调用者之间的契约)就有缺陷,您应该清理它,例如制作两个与x()
不同的方法。
您不必从 foo() 的子类实现中调用 super.foo()。
public class Main {
static class A {
void foo() {
System.out.println("A.foo()");
}
}
static class B extends A {
void foo() {
System.out.println("B.foo()");
}
void bar() {
super.foo();
}
}
public static void main(String[] args) {
B b = new B();
b.bar();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.