随机化功能实现

时间:2017-04-25 01:22:01

标签: java random

假设我在一个进行移动的类中有一个方法(称之为移动(地球))。该函数在另一个使用继承的类中实现,如下所示:

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的情况下修改上述实现。

1 个答案:

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