gpt4 book ai didi

java - 包含同名 super.method() 的重载方法

转载 作者:行者123 更新时间:2023-12-04 05:57:09 25 4
gpt4 key购买 nike

在有人说这是一个骗局之前,我查看了有关 super.super.method() 的其他答案,但该问题的答案不存在。

我使用一个在多个级别重载方法的库:

class Level0 {
public void sameName() {}
}

class Level1 extends Level0 {
public void sameName() {
someActions();
super.sameName();
}
}

class Level2 extends Level1 {
public void sameName() {
someOtherActions();
super.sameName();
}
}

假设我正在编写类 Level3 并且我想修改 Level2 中的方法 sameName()。但是Level0、Level1、Level2中的代码被卡住了,无法更改。 处理这种情况时的最佳实践(或至少是理智的方法)是什么?

自然的方法是调用 super.super.sameName() 但出于显而易见的原因,Java 不允许这样做。我是否坚持使用副本 Level2 并在那里修改它?如果我必须在 Level1 中修改 sameName() 怎么办?

最佳答案

您可以在 Level3 中做同样的事情- someOtherOtherActions()然后 super.sameName() .如果你真的想修改 Level2 的行为而不是扩展它 - 你没有其他选择。这是一件好事——每个类都定义了它的方法并且不允许其他人修改它们(只是为了覆盖它们)。

您可以寻找可以修改方法行为的插件,但这取决于特定的代码。例如,如果 someOtherActions() protected ,您可以使用不调用 super.someOtherActions() 的空白实现覆盖它.

关于java - 包含同名 super.method() 的重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9382279/

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