我很难理解 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/