我无法理解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方法中编写任何内容并继续前进? 最佳答案
绝对没有必要称为超级。
如果需要,它仅可以帮助您调用超类方法中包含的逻辑。
很多时候,您希望运行确切的逻辑,然后提供其他逻辑。
覆盖始终并不意味着提供全新的逻辑。有时您想提供一些变化。例如,如果该方法返回一个值,则调用超类方法并获取该值。然后,您可以使用子类方法中的逻辑对该对象进行一些修改,然后将其返回给调用方。