我有一个类brotherClass
和一个类sisterClass
,它们都从parentClass
继承。名为getName()
的方法在parentClass
中定义。目前,两个子类都在其某些函数的逻辑中调用getName()
。
现在,我们的客户希望我们这样做,即调用brotherClass
的{{1}}和sisterClass
外部都有一个类(?)。这样,两个子类都可以调用该外部函数一次,而不是在自己的类中调用两次。
我认为在某种程度上他想节省空间/内存。否则,他提到我应该实现一些在getName()
中以某种方式调用getName()
的函数,brotherClass()
也应该能够访问它。
我对如何向前推进感到十分茫然,而且我几乎逐字地输入了这个内容。这是我现在面临的问题的简化版本。
答案 0 :(得分:0)
如果您的所有子类具有相同的代码,则可以将该公共代码放在超类方法中:
<强>之前强>
public class HelloWorld {
}
public class Child1 extends HelloWorld {
public void someLogic() {
[commonCode]
...
}
}
public class Child2 extends HelloWorld {
public void someOtherMethod() {
[commonCode]
...
}
}
<强>后强>:
public class HelloWorld {
public void common() {
[commonCode]
}
}
public class Child1 extends HelloWorld {
public void someLogic() {
super.common();
...
}
}
public class Child2 extends HelloWorld {
public void someOtherMethod() {
super.common();
...
}
}
答案 1 :(得分:0)
嗯,你可以做的事情取决于你想要实现的逻辑。您可以将具有getName()
结果的字段添加到父类,并且当您运行兄弟或姐妹方法时,只需检查该字段是否包含任何内容。如果是的话,你使用那里的值,如果没有 - 你运行完整的getName()
逻辑。
如果它不合适,另一种方法是创建另一个类:
class Container{
Brother b;
Sister s;
void doCalculations(){
Object result = Parent.getName();
b.runMethod(result);
s.runMenthod(result);
}
也可能有其他选择。