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.