在Java中使用子类对象调用父方法

在Java中使用子类对象调用父方法,java,inheritance,Java,Inheritance,是否有方法调用父类方法,这些方法由使用子类对象的子类重写? 我知道可以在重写的方法中使用super.foo()将调用重定向到父类方法,但是有没有一种方法不需要在调用父类方法之前先进入子类方法?否 如果类Child的对象被调用来执行x(),那么在Java中,它的类(Child)负责提供正确的实现。因此,Child类始终负责,在为x()调用提供服务的过程中,是否调用其父类方法是Child类的唯一决定 如果您发现子类实现不适合为x()调用提供服务,那么这就是child.x()方法实现的一个bug,您必

是否有方法调用父类方法,这些方法由使用子类对象的子类重写? 我知道可以在重写的方法中使用super.foo()将调用重定向到父类方法,但是有没有一种方法不需要在调用父类方法之前先进入子类方法?

如果类
Child
的对象被调用来执行
x()
,那么在Java中,它的类(
Child
)负责提供正确的实现。因此,
Child
类始终负责,在为
x()
调用提供服务的过程中,是否调用其父类方法是
Child
类的唯一决定

如果您发现子类实现不适合为
x()
调用提供服务,那么这就是
child.x()
方法实现的一个bug,您必须修复该实现才能正确地为调用提供服务


如果对于某些给定的调用参数,子类无法判断如何正确地为调用提供服务,那么该方法的设计(作为调用方和被调用方之间的契约)是有缺陷的,您应该对此进行清理,例如,从
x()

生成两个不同的方法,您不必调用super.foo()来自foo()的子类实现


如果这是你需要面对的情况,那么程序的设计就很差,你必须考虑重新设计。您越多地应用补丁来打破OOPS原则,代码就会变得越脏,越不可管理。
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();
    }
}