JAVA - 메서드 오버로딩(Method overloading)
메서드 오버로딩(Method Overloading)이란?
하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩, 간단히 오버로딩이라고 합니다.
 ▶ 오버로딩의 조건
- 메서드의 이름이 같아야 합니다.
- 매개변수의 개수 또는 타입이 달라야 합니다.
- 매개변수는 같고, 리턴타입이 다른 경우는 오버로딩이 성립하지 않습니다.(리턴타입은 오버로딩을 구현하는데 아무런 영향을 주지 못하기 때문입니다.)
 ▶ 오버로딩의 예
대표적인 예제는 Java에서 자주 사용하는 println()메서드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void println()
void println(boolean x)
void println(char x)
void println(char[] x)
void println(double x)
void println(float x)
void println(int x)
void println(long x)
void println(Object x)
void println(String x)
 아래의 add() 메서드도 오버로딩으로 구현되었습니다.
1
2
3
4
5
6
7
int add(int a, int b){
	return a + b;
}
long add(double c, double d){
	return a + b;
}
 예제를 통해 확인해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
 * @file name : OverloadingTest.java
 * @date : 2013. 8. 15.
 * @discription : 오버로딩 테스트 클래스
 * @author Cremazer(cremazer@gmail.com)
 */
public class OverloadingTest {
	int a = 1;
	int b = 2;
	double c = 1.5;
	double d = 2.5;
	int add() {
		return a + b;
	}
	int add(int x) {
		return a + x;
	}
	int add(int a, int b) {
		return a + b;
	}
	double mul() {
		return c * d;
	}
	double mul(double x) {
		return c * x;
	}
	double mul(double c, double d) {
		return c * d;
	}
	public static void main(String[] args) {
		OverloadingTest ot = new OverloadingTest();
		System.out.println(ot.add());
		System.out.println(ot.add(5));
		System.out.println(ot.add(4, 7));
		System.out.println(ot.mul());
		System.out.println(ot.mul(5.5));
		System.out.println(ot.mul(2.4, 5.5));
	}
}
 ▶ 결과
1
2
3
4
5
6
3
6
11
3.75
8.25
13.2
 코드를 살펴보면
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int add(){ //매개변수 없음
	return a + b;
}
int add(int x){ //매개변수 1개
	return a + x;
}
int add(int a, int b){ //매개변수 2개
	return a + b;
}
double mul(){ //매개변수 없음
	return c * d;
}
double mul(double x){ //매개변수 1개
	return c * x;
}
double mul(double c, double d){ //매개변수 2개
	return c * d;
}
 add() 메서드와 mul()에 대해 오버로딩을 사용하였습니다.
이와 같이 메서드명이 같고, 매개변수 가 다르게 구현된 메서드를 메서드 오버로딩이라고 합니다.
 This post is licensed under  CC BY 4.0  by the author.
