public abstract class Agent1 {
public abstract void actOn(Object o);
public void repeat(Object o, int i) {
for (int j = 1; j <= i; j++) {
actOn(o);
}
}
}
public abstract class Agent2 {
public abstract void actOn(Object o, int i);
public void repeat(Object o, int i) {
for (int j = 1; j <= i; j++) {
actOn(o, j);
}
}
}
如何通过减少代码重复来改进代码?答案是:
agent1必须从agent2继承,agent1将使用acton(o)执行acton(o,i),并删除repeat函数。。。。。
但在我看来,以下答案看起来是正确的,但它是错误的,为什么:
agent2必须从agent1继承,agent2将使用acton(o,i)执行acton(o),并删除repeat函数
编辑:粗体agent2
1条答案
按热度按时间snz8szmq1#
第一种选择:
agent1必须从agent2继承,agent1将使用acton(o)执行acton(o,i),并删除repeat函数。。。。。
可能的实施:
第二种选择:
agent2必须从agent1继承,agent1将使用acton(o,i)执行acton(o),并删除repeat函数
agent1不能使用
actOn(o,i)
执行时actOn(o)
因为如果代理2extends
agent1然后agent2将是从agent1继承的(不是viceversa),因此actOn(o,i)
代理1不可用。第二种选择是错误的,第一种是正确的。
第二选择编辑:
agent2必须从agent1继承,agent2将使用acton(o,i)执行acton(o),并删除repeat函数
实施尝试:
如你所见,你不能打电话
actOn(o, i)
从actOn(o)
在agent2类中,除非您声明并初始化i
第一。如果练习没有设置任何关于创建额外变量的限制,那么我看不出第二个答案有什么问题。