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/