0

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

现在,我们的客户希望我们这样做,以便在两者外部都有一个类(?)brotherClass并且sisterClass调用getName(). 这样,两个子类都可以调用该外部函数一次,而不是在它们自己的类中调用两次。

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

我对如何继续前进感到非常茫然,我几乎逐字输入了这个。这是我现在在工作中面临的问题的一个非常简化的版本。

4

2 回答 2

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();
          ...
     }
}
于 2012-09-18T20:21:50.617 回答
0

好吧,您可以做的事情取决于您要实现的逻辑。您可以将带有getName()结果的字段添加到您的父类,当您运行兄弟或姐妹方法时,只需检查该字段是否包含任何内容。如果是,则使用那里的值,如果不是,则运行完整的getName()逻辑。

如果不适合,另一种方法是创建另一个这样的类:

class Container{
    Brother b;
    Sister s;
    void doCalculations(){
        Object result = Parent.getName();
        b.runMethod(result);
        s.runMenthod(result);
}

可能还有其他选择。

于 2012-09-19T06:39:02.620 回答