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

Enyang Mercy
PLUS
Enyang Mercy
Courses Plus Student 2,339 Points

method overloading bring back old method

creat new method that accepts no argument it should call the new method

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 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(int lapsDriven) {
    lapsDriven++;
    barCount-= barCount;
    lapsDriven += lapsDriven;
  }

  public void drive() {
    lapsDriven+= lapsDriven;
  }

  }
}

2 Answers

Yanuar Prakoso
Yanuar Prakoso
15,196 Points

Hi There... All you need to do is call the drive method with int parameter from the new drive method with no parameter, which as you know this is what they called as method overloading in practice. This is how you should modify the last part of the code:

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

  public void drive(){
    drive(1);
  }

As you can see the later drive() method called the previous drive(int laps) method and pass an integer 1 as the parameter to make the drive(int laps) to behave as the old drive method which add the lapsDriven variable by one and substract the barCount variable by one. The whole code should be like this:

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 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(int laps) {
    lapsDriven += laps;
    barCount -= laps;
  }

  public void drive(){
    drive(1);
  }
}

I hope this can help you solve the problem.