티스토리 뷰
하나의 메소드 이름으로 다양한 매개값을 받을수 있는 방법은 없을까?
이 부분을 해결하기 위해 메소드 오버로딩 이라는 방식이 있다.
메소드 오버로딩은 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것 이다.
먼저 아래 예시를 살펴보자.
1 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
public class MethodTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(2,5));
System.out.println(add(2.2,5.5));
System.out.println(add("2.5","5.5"));
}
//메소드 오버라이딩 중복정의 한다.
static int add(int i, int j){
return i+j;
}
static double add(double i, double j){ // 반환타입 메소드 이름 (입력 인자1, 입력인자 2)
return i+j;
}
static String add(String i , String j){
return i+j;
}
}
|
cs |
인자의 타입이 각각 int, double , String 임에도 불구하고 조건에 맞는 메소드를 찾아가 알맞는 결과를 얻을수 있다.
오버로딩 조건
1. 메소드 이름이 동일하여야 한다.
2. 인자가 개수 서로 다르거나, 인자 타입이 서로 달라야 한다.
3. 이름이 같고 인자의 개수나 타입이 모두 같은데, 리턴 타입이 다르면 오버로딩이 성립되지 않으며, 컴파일 오류가 발생한다.
실패 사례
인자가 같기때문에 두번째 조건에 위배되기 때문에 에러가 발생한다.
인자의 개수를 하나 더 늘리니까 에러가 없어 졌다.
'IT > JAVA' 카테고리의 다른 글
[정보올림피아드] 198번 (0) | 2017.07.10 |
---|---|
[정보올림피아드] 197번 (0) | 2017.07.10 |
예외처리 TRY-CATCH-FINALLY 문 (0) | 2017.07.06 |
main메소드 안에 args는 무엇일까 ? (0) | 2017.07.06 |
[정보 올림피아드] 151번 (0) | 2017.07.06 |
댓글