Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Java Java Objects Harnessing the Power of Objects Overload Methods

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
229,788 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.

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

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