假设我在一个进行移动的类中有一个方法(称之为移动(地球))。该函数在另一个使用继承的类中实现,如下所示:
animal.move(地球)
是否可以在不弄乱函数方法的情况下随机化实际实现?
public void rMove(Earth myEarth) throws InterruptedException
{
int x = (int) location.getX();
int y = (int) location.getY();
int xMax = myEarth.getX() - 1;
int yMax = myEarth.getY() - 1;
double w = Math.random();
int rMove = (int) (w + Math.random()*4);
switch(rMove)
{
case NOR:
location.setLocation(x,y-1);
break;
case SOU:
location.setLocation(x,y+1);
break;
case EAS:
location.setLocation(x+1,y);
break;
case WES:
location.setLocation(x-1,y);
break;
}
}
包含此方法的类扩展到另一个类
public class Carnivore extends Animal
在食肉动物类中,动物使用上述功能移动:
super.rMove(myEarth);
还有很多其他涉及运动的代码,但我认为它并不相关。我的问题是如何在不修改实际的rMove的情况下修改上述实现。
答案 0 :(得分:0)
我会考虑为随机化逻辑提供一个单独的方法,可以被Animal的子类覆盖。我不是Java开发人员,因此语法可能不完全正确,但这会给你一个想法。例如:
public abstract class Animal
{
public abstract int moveRandom();
}
public class Carnivore extends Animal
{
public int moveRandom() {
double w = Math.random();
int rMove = (int) (w + Math.random()*4);
return rMove;
}
}
public void rMove() {
int rMove = this.rMove();
}