[英]In Java, how do I call a base class's method from the overriding method in a derived class?
[英]How do I call a base class's own method from another method when it's overridden?
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(),以便子类可以具有oBase和oChild的吸气剂。
我试过在Parent.getObjectValue()中使用((Parent)this).getObject()。getValue(),但是它仍然对子定义多态。 有没有办法在特定调用中强制在Java中进行静态绑定?
我试图避免从Parent.getObjectValue()中的Parent.getObject()复制[某些逻辑],但是我想如果真的没有办法的话,我不得不这样做。
由于多态性,您不能从子类外部强制调用Parent
的方法。 实际上,对于Child
对象,父方法已不存在,因为它已被覆盖。
您似乎在这里不需要多态性的任何方面(尽管没有更多信息很难说)。 如果确实不需要(不同的用例),请更改方法的名称,以免发生这种情况。
注意:如果您在子类中,则可以使用super
,但是我不认为这是您的情况。
您可以直接引用私有字段“ oBase”,而不是使用“ getObject()”方法。
您可以将getObject()
方法getObject()
私有,也可以更改方法名称,以使多态性不会启动。 总体而言,您将不得不重新考虑您的设计。
其他选项是将[某些逻辑]提取到第三个方法,然后从getObject()
和getObjectValue()
调用此方法。 使用此设计时,请记住命令查询分离原则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.