한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 의미한다.
💡 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.
int add(int a, int b) {
return a + b;
}
int (int a, int b, int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++{
sum += arr[i];
}
return a + b + sum;
}
오버로딩의 잘못된 예 1
int add(int a, int b) { return a + b; } int add(int x, int y) { return x + y; }매개변수의 이름만 다를 뿐, 매개변수의 개수와 타입이 같기 때문에 오버로딩이 성립하지 않는다.
오버로딩의 잘못된 예 2
int add(int a, int b) { return a + b; } int add(int a, int b) { return (long) (a + b); }매개변수의 타입과 개수가 같기 때문에 오버로딩이 성립하지 않는다.
반환 타입은 오버로딩에 영향을 미치지 않는다.
오버로딩을 통해서 같은 기능을 하는 메서드들이 하나의 이름으로 정의가 가능하다.
만약 같은 기능을 하는 메서드이지만 한 클래스내의 모든 메서드들이 이름이 달라야 한다면, 메서드 선언을 위해 이름을 짓는데에도 어려움을 겪고, 이를 사용하기위해 메서드들을 일일이 구분하는데에도 어려움을 겪게된다.