한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것
- 메서드 이름이 같아야 한다.
- 매개션수의 갯수 또는 타입이 달라야 한다.
- 반환 타입은 영향없다.
int add(int x, int b) { return a+b; }
int add(int x, int y) { return x+y; }
// 메서드 이름은 같으나 매개변수의 갯수와 타입이 같기 때문에 오버로딩 아님
int add(int a, int b) { return a+b; }
long add(int a, int b) { return (long)(a+b); }
// 반환타입은 다르지만 어차피 영향이 없고, 메서드 이름은 같지만 매개변수
// 이름과 타입이 모두 같기에 오버로딩 아님
int add(int a, long b) { return a+b; }
long add(long a, int b) { return a+b; }
// 메서드 이름이 같고 매개변수의 타입이 다르기 때문에 오버로딩 성립!!
매개변수는 다르지만 같은 의미의 기능 수행
class MyMath3 {
int add(int a, int b) {
System.out.print("int add(int a, int b) - ");
return a+b;
}
long add(long a, long b) {
System.out.print("long add(long a, long b) - ");
return a+b;
}
int add(int[] a) { // 배열의 모든 요소의 합을 결과로 돌려준다.
System.out.print("int add(int[] a) - ");
int result = 0;
for(int i = 0; i < a.length; i++)
result += a[i];
return result;
}
}