오버로딩

오버로딩이란?

한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것을 **메소드 오버로딩(method overloading)**또는 **오버로딩(overloading)**이라고 한다.

같은 이름이지만 매겨변수의 개수 또는 타입이 달라야한다.


오버로딩의 조건

  1. 메소드의 이름이 같아야 한다.
  1. 매개변수의 개수 또는 타입이 달라야한다.

반환타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.


오버로딩의 예

대표적인 예로는 println메소드이다. println의 매개변수로는 null, boolean, char, char[], double, float, int, long, Object, String 가 각각 오버로딩되어있다.


오버로딩의 장점

같은 기능을 하지만 다른 매개변수 타입을 가지는 메서드를 다른이름을 써서 정의할 필요가 없어진다. 이름을 쉽게 지을 수 있고, 기억하기 쉽고, 기능을 예측하기 쉽다.


가변인자(varargs)와 오버로딩

기존에는 메소드의 매개변수 개수가 고정적이였으나 JDK1.5부터 동적으로 지정해 줄 수 있게 되었으며, 이 기능을 **가변인자(variable arguments)**라고 한다.

가변인자는 **'타입... 변수명'**과 같은 형식으로 선언하며, PrintStream클래스의 printf()가 대표적인 예이다.

public PrintStream printf(String format, Object... args) { ... }

위와 같이 가변인자 외에도 매개변수가 더 있다면, 가변인자를 매개변수 중에서 제일 마지막에 선언해야 한다.