我在理解super()的概念时遇到了麻烦。Java Tutorials给出了这个示例:
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,为什么我需要调用超类方法呢?为什么我不能在printMethod()的子类方法中写任何东西,然后继续呢?
发布于 2014-02-10 14:39:59
绝对没有必要打电话给管理员。如果您需要的话,它只是帮助您调用包含在超类方法中的逻辑。很多时候,您希望精确的逻辑运行,然后提供额外的逻辑。
覆盖并不总是意味着提供全新的逻辑。有时,您希望提供一些细微的变化。例如,如果方法返回一个值,则调用超类方法并获取该值。然后,使用子类方法中的逻辑对该对象进行一些细微的修改,并将其返回给调用者。
https://stackoverflow.com/questions/21670525
复制相似问题