我无法理解super()的概念。 Java教程给出了以下示例:

public class Superclass {
    public void printMethod() {
        System.out.println("Printed in Superclass.");
    }
}

public class Subclass extends Superclass {
    // overrides printMethod in Superclass
    public void printMethod() {
        super.printMethod();
        System.out.println("Printed in Subclass");
    }
    public static void main(String[] args) {
        Subclass s = new Subclass();
        s.printMethod();
    }
}


但是,如果我要覆盖printMethod,为什么需要调用Superclass方法?为什么我不能只在printMethod()的Subclass方法中编写任何内容并继续前进?

最佳答案

绝对没有必要称为超级。
如果需要,它仅可以帮助您调用超类方法中包含的逻辑。
很多时候,您希望运行确切的逻辑,然后提供其他逻辑。

覆盖始终并不意味着提供全新的逻辑。有时您想提供一些变化。例如,如果该方法返回一个值,则调用超类方法并获取该值。然后,您可以使用子类方法中的逻辑对该对象进行一些修改,然后将其返回给调用方。

09-04 04:12