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

I need help with methods in Java

I am supposed to recreate a method I had previously created that set a parameter to increment by one. After I originally coded that method, the exercise had me change it to a parameter that can increment by any value. Now it wants me to recreate my original method WITHOUT removing the second method. I can do this but because methods have the same name, the code bugs. I know that I should be able to change the parameter of a previously used method successfully but I haven't been able to figure it out. The videos accompanying this portion of the track have us working on a project that has similar concepts, but isn't similar enough for me to extrapolate a solution.

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


}

1 Answer

Raphaël Seguin
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Raphaël Seguin
Full Stack JavaScript Techdegree Graduate 29,228 Points

Hi, "method overload" means you can declare a method several times with different parameter types, or none. In this challenge, you need to declare the method drive with one integer parameter and then declare it a second time with no parameter. The drive method with no parameter use the other drive method with the "default" argument of 1. Does it help you ?

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

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

Thank You!