오버로딩 (Overloading)
오버로딩이란 한 클래스 내에서 같은 이름의 메서드를 다수 정의하는 것이다.
메서드의 이름이 같아도 매개변수가 다르면 구별이 가능하다.
class Num {
int add (int a, int b) {
return a + b;
}
int add(int a, int b) {
return a - b;
}
}
메서드의 이름은 같지만 매개변수의 개수와 타입이 모두 같기 때문에 컴파일 에러가 난다.
java: method add(int,int) is already defined in class Num
add라는 메서드가 이미 Num 클래스에 정의되어 있다는 설명이다.
class Num {
int add(int a, int b) {
return a + b;
}
long add(long a, int b) {
return a - b;
}
int add(int a, int b, int c) {
return a + b + c;
}
}
두 번째 add 메서드는 long타입 매개변수로 타입이 다른 매개변수가 있다.
세 번째 add 메서드는 매개변수의 개수가 3개로 개수가 중복되지 않는다.
위의 경우에는 오버로딩이 적용되어 컴파일 에러가 나타나지 않는다.
public class Main {
public static void main(String[] args) {
Num num = new Num();
System.out.println(num.add(1, 2));
System.out.println(num.add(1L, 2));
System.out.println(num.add(1, 2, 3));
}
}
class Num {
int add(int a, int b) {
return a + b;
}
long add(long a, int b) {
return a - b;
}
int add(int a, int b, int c) {
return a + b + c;
}
}
결과 값
3
-1
6