Java Java Objects Harnessing the Power of Objects Overload Methods

Roger sam
Roger sam
566 Points

new drive method that takes an int and passing it a 1 as a default is not working.

class GoKart { public static final int MAX_BARS = 8; private String color; private int barCount; private int lapsDriven;

public GoKart(String color) { this.color = color; }

//this bottom method is not working.

public int drive() { return drive == 1; }

public void drive() { lapsDriven++; }

public void drive (int lapsGone) { lapsDriven += lapsGone; barCount -= MAX_BARS; }

public String getColor() { return color; } public void charge() { barCount = MAX_BARS; }

public boolean isBatteryEmpty() { return barCount == 0; }

public boolean isFullyCharged() { return MAX_BARS == barCount; }

public void drive() { lapsDriven++; barCount--; } }

GoKart.java
class GoKart {
  public static final int MAX_BARS = 8;
  private String color;
  private int barCount;
  private int lapsDriven;


  public GoKart(String color) {
    this.color = color;
  }

  public int drive() {
    return drive == 1;
  }

   public void drive() {
    lapsDriven++;
  }

  public void drive (int lapsGone) {
    lapsDriven += lapsGone;
    barCount -= MAX_BARS;
  }

  public String getColor() {
    return color;
  }
  public void charge() {
    barCount = MAX_BARS;
  }

  public boolean isBatteryEmpty() {
    return barCount == 0;
  }

  public boolean isFullyCharged() {
    return MAX_BARS == barCount;
  }

  public void drive() {
    lapsDriven++;
    barCount--;
  }
}

3 Answers

Steven Parker
Steven Parker
201,997 Points

It looks like you've added three new methods named "drive", but there should only be one new one.

You also probably don't want to subtract MAX_BARS each time, regardless of the laps driven.

Roger sam
Roger sam
566 Points

Of course, another user of the code just wrote and asked "Where'd that drive method go! I loved that method, can you put it back please?" Sigh...Well thanks to method overloading we can pretty easily bring the method back

Create a new method named drive that accepts no arguments. It should call the newer drive method passing in a 1 for the default.

class GoKart { public static final int MAX_BARS = 8; private String color; private int barCount; private int lapsDriven;

public GoKart(String color) { this.color = color; }

public void drive (int lapsGone) {
lapsDriven += lapsGone;
barCount -= MAX_BARS;

}

public String getColor() { return color; } public void charge() { barCount = MAX_BARS; }

public boolean isBatteryEmpty() { return barCount == 0; }

public boolean isFullyCharged() { return MAX_BARS == barCount; }

public int drive() { return drive == 1; } } // Still does not work. I have only used "drive" twice for overlading. //Error : Bummer: In your new drive method, make sure you call the drive method that takes an int. Pass it a 1, since that's the default

Roger sam
Roger sam
566 Points

Thanks got it. It should passing parameters sud be drive(1) empty up on the top.