gpt4 book ai didi

Java:从第二个派生类调用基方法类

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

这就是我想要做的:

class A {
void myMethod() {
// execute A
}
}

class B extends A {
void myMethod() {
// execute B
}
}

class C extends B {
void myMethod() {
// execute C
// execute myMethod in A, without touching myMethod in B OR both
}
}

我想有条件地执行此操作,即有时调用 myMethod 中的内容里面 B其他时候不是,但总是调用 myMethod里面 A .

调用 super.myMethod()C我得到 myMethodB , 但我只想要 myMethodA .那可能吗?我听说过“虚拟”的东西,但我不知道如何使用它们……但是。

最佳答案

不,在 Java 中这是不可能的。类(class) B覆盖并因此隐藏了 myMethod 的实现在 A从进一步的派生类。允许C调用myMethodA会违反这种封装。考虑 B.myMethod 的情况。在内部调用 A.myMethod 之前执行一些更新这对于 B 的正确功能很重要.没有这些更新,B 的契约(Contract)可能会被违反。因此,应该无法调用A.myMethod。在派生类中不调用 B.myMethod .

通常,如果你想做这样的事情,你的设计就有缺陷。

当然,您可以执行 Dave 在评论中建议的操作:您可以更改 B.myMethod 的实现调用A.myMethod .没关系,因为 B保留对何时调用 A.myMethod 的控制权.因此,它可以注意不违反其契约(Contract)。

另一个想法是从 A 中分解出你想要的行为。进入另一种方法并调用这个方法。

关于Java:从第二个派生类调用基方法类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267542/

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