我有几个扩展其他类的类。他们都有一个共同的方法result
。如果我有foobarbaz
的实例,是否可以调用其父/祖父的result
方法?在子类对象上调用父类的方法java
public class Foo {
protected int resultA;
public void calc(){ resultA=...}
public void result(){ return resultA; }
}
public class Foobar extends Foo{
protected int resultA;
public void calc(){
super.calc();
resultB=...;
}
public void result(){ return resultB; }
}
public class Foobarbaz extends Foobar{
protected int resultA;
public void calc(){
super.calc();
resultC=...;
}
public void result(){ return resultC; }
}
我试图解决的问题是每个类除了它的父类之外,还有一些额外的计算。如果用户想要所有3个对象的结果,CalculationManager只知道Foobarbaz需要被引用和计算。然后它返回给Foobarbaz的参考资料给任何询问Foo的人,因为Foobarbaz也会为Foo产生结果。
喜欢的东西:
CalculationManager.add(Foo,Foobar,Foobarbaz);
//The following 3 calls return the same reference to a Foobarbaz object
Foo res1=CalculationManager.get(Foo);
Foobar res2=CalculationManager.get(Foobar);
Foobarbaz res3=CalculationManager.get(Foobarbaz);
CalculationManager.doCalc();
//Iterate over each object to get result with the same method .result()
res1.result(); //---> resultA
res2.result(); //---> resultB
res3.result(); //---> resultC
愚蠢的问题,但你有什么工作吗?我看起来好像可能。 – Peaches491 2011-06-09 16:34:59
我不能向你保证。Java有一些沿着动态方法调用的方式,即使你给一只猫贴上标签,然后调用getFood(),它会返回dogFood而不是catFood。 *不要试图把狗当作猫来投放 – 2011-06-09 16:39:14
你试图这样做的事实表明你可能在你的程序中有一个概念缺陷。因此,你应该花时间修复这个概念缺陷,而不是解决问题。无论如何,答案中的示例代码将允许您这样做。 – deadalnix 2011-06-09 16:53:05