public class Parent{
private Object oBase;
public Object getObject(){
// [some logic]
return oBase;
}
public String getObjectValue(){
return getObject().getValue();
}
public class Child extends Parent {
private Object oChild;
public Object getObject(){
return oChild;
}
public Object getObjectValue(){
return getObject().getValue();
}
public String getParentObjectValue(){
return super.getObjectValue();
}
}
在上面的模板中,我需要一种方法来确保Parent.getObjectValue()中的getObject()调用Parent.getObject()而不是Child.getObject(),以便子类可以有getBase到oBase和oChild。
我尝试在Parent.getObjectValue()中使用((Parent)this。)。getObject()。getValue(),但它仍然是子定义的多态。有没有办法在java中为特定的调用强制静态绑定?
我试图避免在Parent.getObjectValue()中复制来自Parent.getObject()的[某些逻辑],但我想如果真的没办法我就不得不这样做它
答案 0 :(得分:0)
由于多态性,您无法从子类外部强制调用Parent
方法。实际上,对于Child
对象,父方法不再存在,因为它已被覆盖。
这里似乎不需要任何多态性方面(虽然没有更多信息很难分辨)。如果你确实不需要它(不同的用例),那么改变你的方法'名称,以便它不会发生。
注意:如果您在儿童课程中,那么您可以使用super
,但我认为这不是您的情况。
答案 1 :(得分:0)
你可以参考私人领域' oBase'直接而不是使用' getObject()'方法
答案 2 :(得分:0)
您可以将getObject()
方法设为私有,也可以更改方法名称,以便不会启用多态。总的来说,您必须重新考虑您的设计。
其他选项是将[某些逻辑]提取到第三种方法,并从getObject()
和getObjectValue()
调用此方法。使用此设计时请记住命令查询分离原则。