오버로딩
1. 오버로딩이란?
한 클래스 내에 같은 이름의 메서드를 여러 개 정의 하는 것을 뜻한다.
2. 오버로딩의 조건
오버로딩의 조건은 아래와 같다.
■ 매서드 이름이 같아야 한다.
■ 매개변수의 개수 또는 타입이 달라야 한다.
위의 조건에서 중요한 것은 오버로딩은 오로지 매개변수로만 구별 될 수 있다는 것이다.
예를 들어 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.
※ 단 매개변수 타입의 위치를 바꾸는 것은 오버로딩으로 인정된다.
[매개변수 타입의 위치만 바뀐 오버로딩]
public class Main {
static public void print_test(int a, String b) {
System.out.println(a);
System.out.println(b);
}
static public void print_test(String a, int b) {
System.out.println(a);
System.out.println(b);
}
public static void main(String args[]) {
print_test("Hello",1);
print_test(2, "HI");
}
}
print_test 매서드는 모두 동일하게 int형과 String형의 매개변수를 받지만 각 타입의 위치만 서로 바뀌어있다.
[결과]
Hello
1
2
HI
이와 같이 매개변수의 갯수와 타입이 같더라도 위치가 다르면 오버로딩으로 인정된다는 것을 알 수 있다.
매개변수의 순서가 중요하지 않은 매서드의 경우, 이와 같은 오버로딩은 매개변수의 순서를 외워도 되지 않아도 된다는 장점이 있다.
3. 오버로딩의 장점
오버로딩의 가장 대표적인 예는 println 메서드이다.
[다양한 매개변수를 받는 println]
public class Main {
public static void main(String args[]) {
boolean Boolean = false;
char Char = 'A';
double Double = 1.0;
int Int = 1;
String string = "Hello";
System.out.println(Boolean);
System.out.println(Char);
System.out.println(Double);
System.out.println(Int);
System.out.println(string);
}
}
[결과]
false
A
1.0
1
Hello
위의 예제와 같이 println 메서드는 오버로딩에 의해 다양한 타입의 매개변수를 받을 수 있다.
이처럼 오버로딩은 동일한 역할을 하는 매서드가 여러 매개변수를 받아야 할 때 유용하다.
4. 오버로딩과 가변인자
매개변수로 가변인자를 사용하는 매서드는 오버로딩 할 때 에러가 나기 쉽기 때문에 가능하면 가변인자를 사용한 메서드는 오버로딩 하지 않는 것이 좋다.
'JAVA > 기본' 카테고리의 다른 글
예외 처리(exception handling) (0) | 2021.08.02 |
---|---|
#5 생성자(Constructor) (0) | 2021.04.28 |
#3 변수, 메서드 (0) | 2021.04.23 |
#2 클래스, 인스턴스 (0) | 2021.04.21 |
#1 객체 지향 프로그래밍 (0) | 2021.04.21 |
댓글