gpt4 book ai didi

Java 从基本构造函数调用基本方法

转载 作者:行者123 更新时间:2023-12-01 06:33:35 24 4
gpt4 key购买 nike

如何从 Super::Super() 调用 Super::printThree?
在下面的示例中,我改为调用 Test::printThree。

class Super {
Super() {
printThree(); // I want Super::printThree here!
}
void printThree() { System.out.println("three"); }
}
class Test extends Super {
int three = 3
public static void main(String[] args) {
Test t = new Test();
t.printThree();
}
void printThree() { System.out.println(three); }
}

output:
0 //Test::printThree from Super::Super()
3 //Test::printThree from t.printThree()

最佳答案

你不能——这是一个在子类中被重写的方法;您不能强制调用非虚拟方法。如果您想非虚拟地调用方法,请将方法设为私有(private)或最终。

一般来说,正是由于这个原因,在构造函数中调用非 final方法是一个坏主意 - 子类构造函数主体尚未执行,因此您实际上是在尚未执行的环境中调用方法。尚未完全初始化。

关于Java 从基本构造函数调用基本方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7223435/

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