gpt4 book ai didi

java - 从父类调用扩展的类方法,扩展类保留父类变量的实例

转载 作者:行者123 更新时间:2023-12-01 09:15:07 26 4
gpt4 key购买 nike

我正在为特定域实现访问者模式,其中我有一些BaseVisitor,即:

public class BaseVisitor {
someC someInstance;

visitA(...) {
...
}

visitB(...) {
...
}
}

以及一个更改特定功能的类,ExtendedVisitor,即:

public class ExtendedVisitor extends BaseVisitor {    
visitA(...) {
...
}
}

ExtendedVisitor 具有不同的 visitA 实现。

我想做的是,当我在BaseVisitorvisitB中时,在特殊情况下我想使用ExtendedVisitor的方法code> (visitA) 与 BaseVisitor 本身的常规 visitA 相反。这工作正常,即:

visitB(...) {
if (...)
new ExtendedVisitor().visitA();
else
visitA();
}

现在显然,在BaseVisitor中有很多visit方法,因此ExtendedVisitorvisitA将调用它们(即这些方法的原始实现 - 在 BaseVisitor 中)。问题是,此时我丢失了 someInstance 的实例(即它是 null)。有没有办法让两个类共享变量? IE。让 child 使用 parent 的变量?

最佳答案

由于您正在调用 new ExtendedVisitor(),因此您正在创建该类的新实例,当然 someInstance 将为 null。您可以创建一个类似的构造函数

public ExtendedVisitor(someC someInstance ){
this.someInstance = someInstance
}

但这听起来不是一个好主意......

通过您的设计,您将强制父类了解其子类的功能。我在这里看到一个耦合问题。也许您应该重新考虑您的代码并以更好的方式使用继承和多态主义。

关于java - 从父类调用扩展的类方法,扩展类保留父类变量的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40610405/

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