정답
public void run(int speed) { System.out.println("차가 "+speed+"로 달립니다."); }
해설
같은 이름으로 매개변수를 다르게 정의하는 것을 오버로딩이라고 합니다.
메서드의 이름을 다르게 정의한다면 차가 그냥 달릴 때와 정해진 속도로 달릴 때 각기 다른 이름의 메서드를 사용해야 하므로, 경우에 따라 메서드를 각각 학습해야 합니다. 하지만 메서드의 이름을 똑같이 정의한다면 차가 그냥 달리든지 정해진 속도로 달리든지 차를 달리게 하기 위해 run이라는 메서드만 떠올리면 됩니다.
메서드 오버로딩의 대표적인 예인 System.out.println()의 println() 메서드를 살펴보면 이해하기 쉽습니다. 이 메서드는 다양한 매개변수, 즉 int, char, String 등 기본 자료형과 그 외 자료형으로 오버로딩됐습니다. 그러므로 println() 메서드를 사용할 때 어떤 자료형을 출력하든지 고민 없이 println() 메서드를 사용할 수 있습니다.
System.out.println(20); System.out.println("test"); System.out.println(20.2); System.out.println(false);
이렇게 할 수 있는 이유는 println이라는 메서드가 다양한 형식으로 오버로딩됐기 때문입니다.