java - 理解 super 的概念吗?

标签 java inheritance overriding

我很难理解 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,为什么我需要调用父类(super class)方法?为什么我不能在 printMethod() 的子类方法中编写任何内容然后继续?

最佳答案

完全没有必要调用super。 如果需要,它只是帮助您调用父类(super class)方法中包含的逻辑。 很多时候,您希望运行确切的逻辑,然后提供附加逻辑。

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

关于java - 理解 super 的概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21670525/

相关文章:

inheritance - UML 类图 : Third Party Software Inheritance

PHP - 用不同数量的参数覆盖函数

c# - 如何覆盖 TryParse?

java - Eclipse > .html 文件未打开

java - Hibernate/JPA 是否考虑了 transient 修饰符(而不是注释)

Java-随机生成矩形

python - Python 中文件解析器的包装或继承

javascript - 如何在javascript中实现部分继承?

c# - 如何在多个 ASP.NET 页面上覆盖相同的函数(渲染函数)

java - 关于在Java应用程序中执行javascript后处理的问题