gpt4 book ai didi

java - 调用父方法而不是被覆盖的方法

转载 作者:行者123 更新时间:2023-11-30 08:34:47 24 4
gpt4 key购买 nike

我有一个类C1:

public class C1 {

public void method() {
//Do something
}

protected void anotherMethod() {
if (something) {
method();
/*Here, I want to call the method C1.method,
* but C2.method is called
*/
}
}

}

和另一个 C2扩展它并覆盖方法:

public class C2 extends C1 {

@Override
public void method() {
if (something) {
anotherMethod();
} else {
super.method();
}
}

}

代码注释中描述了我的问题。我不能在父类中运行父方法。这是什么原因?

最佳答案

令人讨厌的是,你不能(抛开反射黑客)。

但是你可以在线上做点什么

public class C1 {
public final void _method() /*rename to taste*/{
}

public void method(){
_method();
}
}

并覆盖派生类中的方法。如果您特别需要基类方法,则调用 _method()。我认为这是最接近 C++ 允许的编写 C1::method() 的方式。

关于java - 调用父方法而不是被覆盖的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38631172/

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