overload(과적하다)
한 클래스 안에 같은 이름의 메서드 여러개 정의하는 것
ex)
void println()
void println(boolean a)
void println(char a)
void println(double a)
void println(int a)
...
이름은 같지만 매개변수가 다르다
ex)
int add(int a, int b) {return a + b;}
int add(int a, int b) {return a + b;}
메서드의 이름이 같지만 매개변수의 개수와 타입이 같기 때문에 오버로딩이 성립하지 않는다.(메서드 중복정의)
int add(int a, int b) {return a + b;}
long add(int a, int b) {return (long)(a + b);}
반환타입은 영향을 미치지 않는다.(메서드 중복정의)
long add(int a, long b) {return a + b;}
long add(long a, int b) {return a + b;}
조건 1,2 모두 일치하므로 오버로딩 성립
void println ()
void printlnBoolean (boolean x)
void printlnChar (char x)
void printlnDouble (double x) void printinString (String x)
만약 println
메서드가 이름만으로 구별이 된다면 위처럼 메서드의 기능마다 이름이 서로 달라야 할것이다.
근본적으로는 같은 기능을 하는 메서드이지만 서로 다른 이름을 가져야 하기 때문에 이름을 짓기도 기억하기도 어렵다.
따라서 오버로딩을 이용해 여러 메서드들을 하나의 이름으로 정의할 수 있다.
또한 하나의 이름으로 여러 개의 메서드를 정의할 수 있으니 메서드의 이름을 짓는데 고민을 덜 수 있다.