在兄弟类中设计继承函数

时间:2012-09-18 17:58:52

标签: java inheritance

我有一个类brotherClass和一个类sisterClass,它们都从parentClass继承。名为getName()的方法在parentClass中定义。目前,两个子类都在其某些函数的逻辑中调用getName()

现在,我们的客户希望我们这样做,即调用brotherClass的{​​{1}}和sisterClass外部都有一个类(?)。这样,两个子类都可以调用该外部函数一次,而不是在自己的类中调用两次。

我认为在某种程度上他想节省空间/内存。否则,他提到我应该实现一些在getName()中以某种方式调用getName()的函数,brotherClass()也应该能够访问它。

我对如何向前推进感到十分茫然,而且我几乎逐字地输入了这个内容。这是我现在面临的问题的简化版本。

2 个答案:

答案 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);
}

也可能有其他选择。