A FastCritter moves twice as fast as a regular critter. When asked to move by n steps, it actually moves by 2 * n steps. Implement a FastCritter subclass of Critter whose move method behaves as described.
What do I need to change to make it work?
import java.util.ArrayList;
/**
A simulated critter.
*/
public class Critter //superclass
{
private int position;
private ArrayList<String> history;
/**
Constructs a critter at position 0 with blank history.
*/
public Critter()
{
position = 0;
history = new ArrayList<String>();
}
/**
Gets the history of this critter.
@return the history
*/
public ArrayList<String> getHistory()
{
return history;
}
/**
Adds to the history of this critter.
@param newValue the desired state
*/
public void addHistory(String event)
{
history.add(event);
}
/**
Gets the position of this critter.
@return the position
*/
public int getPosition()
{
return position;
}
/**
Moves this critter.
@param steps the number of steps by which to move.
*/
public void move(int steps)
{
position = position + steps;
addHistory("move to " + position);
}
}
public class FastCritter extends Critter
{
public void act(){
super.move();
n = steps;
move() = 2*n;
}
}
public class FastCritter extends Critter //subclass I am using super to access move() from super class and multiply 2* n (steps)
{
public void act(){
super.move();
n = steps;
move() = 2*n;
}
}
Trending now
This is a popular solution!
Step by step
Solved in 2 steps