gpt4 book ai didi

java - 为什么必须在子类方法的任何代码之前调用父类(super class)的方法版本?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:24:15 25 4
gpt4 key购买 nike

我问是出于好奇而不是必要。我想答案大概是“因为这就是 Java 的构建方式”。我想知道为什么选择这种方式。

例如,如果我的父类(super class)有这个方法:

public void foo()
{
System.out.println("We're in the superclass.");
}

并且子类重写了方法:

@Override
public void foo()
{
super.foo();
System.out.println("We're in the subclass.");
}

为什么 super.foo() 需要位于子类方法的顶部(如果要使用的话)?为什么我不能交换这两行使其看起来像这样:

@Override
public void foo()
{
System.out.println("We're in the subclass.");
super.foo();
}

最佳答案

事实并非如此。它适用于构造函数,但对于普通方法,您可以随时调用它。如果你不想,你甚至不必调用它,或者你可以完全调用不同的父类方法。

从你的例子:

public static void main(String[] args) {
new B().foo();
}

static class A {
public void foo() {
System.out.println("In A");
}
}

static class B extends A {
public void foo() {
System.out.println("In B");
super.foo();
}
}

输出

In B
In A

关于java - 为什么必须在子类方法的任何代码之前调用父类(super class)的方法版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com