gpt4 book ai didi

java类A扩展了类B,并覆盖了方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:16 25 4
gpt4 key购买 nike

public class A {
protected ClassX a;
public void foo() {
operations on a;
}
}

public class B extends A {
private ClassY b; // ClassY extends ClassX
@Override
public void foo() {
//wanna the exact same operation as A.foo(), but on b;
}
}

抱歉标题不够清晰。我的问题是:在 B 类中,当我调用 foo() 时,我想要与 A 类对 a 进行的完全相同的操作。我如何实现这一点并且不重复 A 中的相同代码?如果我在 B 类中遗漏 foo() ,它会起作用吗?或者当我在 foo() 中调用 super.foo() 时发生了什么;

最佳答案

由于 ClassY 扩展了 ClassX,那么您可以从类 B 中删除 private ClassY b。然后您可以将 ClassX 的实例设置为 a 实例变量。这使得 foo() 可以在 B 类中继承,但仍然使用相同的逻辑和实例变量。

public class A {
protected ClassX a

public void foo() {
// operations on a;
}
}

public class B extends A {
// do something to set an instance of ClassY to a; for example...
public void setClassY(ClassY b){
this.a = b;
}
}

关于java类A扩展了类B,并覆盖了方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10646199/

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