4.1 메서드 오버로딩(Method Overloading)
메서드 오버로딩이란?
하나의 클래스의 동일한 이름의 메서드를 여러 개 정의하는 것.예를 들어 System.out.println 메서드에서
다양하게 오버로딩된 메서드를 제공함으로써 모든 변수를 출력할 수 있도록 설계
4.2 오버로딩의 조건
- 메서드의 이름이 같아야 한다.- 매개변수의 개수 또는 타입이 달라야 한다.
- 매개변수는 같고 리턴타임이 다른 경우는 오버로딩이 성립되지 않는다.
- 리턴타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.
잘못된 예
int add(int a, 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 b, int b) {return (long)a+b;}
리턴 타입은 오버로딩의 성립조건이 아니다.
올바른 예 - 매개변수는 다르지만 같은 의미의 기능 수행
int add(int a, long b) {return a+b;}int add(long a, int b) {return a+b;}
long add(long a, long b){return a+b;}
//매개변수의 타입이 다르므로 오버로딩이 성립한다.
class OverloadingTest {
public static void main(String args[]) {
MyMath3 mm = new MyMath3();
System.out.println("결과:" + mm.add(3,3));
System.out.println("결과: " + mm.add(3L,3));
int[] a = {100, 200, 300};
System.out.println("mm.add(a) 결과: " + mm.add(a));
}}
class MyMath3 {
int add(int a, int b) {
return a+b;
}
long add(long b,int a) {
return a+b;
}
int add(int[] a) {
int result = 0;
for(int i=0; i < a.length;i++) {
result += a[i];
}
return result;
}
}