오버로딩(Overloading)
1. 오버로딩이란?
메소드 오버로딩
- 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 오버로딩(Overloading)이라고 한다.
- 메소드 오버로딩을 통해서 매개값을 다양하게 받아서 필요한 처리할 수 있다.
- 메소드 오버로딩의 조건은 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다.
- 매개 변수 이름만 바꾸는 것은 메소드 오버로딩이 아니다. 또한 리턴 타입만 다르고 매개 변수가 동일한 것도 메소드 오버로딩이 아니다.
// 오버로딩의 대표적인 예시
System.out.println(1);
System.out.println(false);
System.out.println('A');
System.out.println("Hello World!");
2. 오버로딩의 조건
① 메서드 이름이 같아야 한다.
② 매개변수의 개수 또는 타입이 달라야 한다.
오버로딩된 메서드들은 매개변수에 의해서만 구별될 수 있으므로 반환타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.
long add(int a, long b) {return a+b;}
long add(long a, int b) {return a+b;}
3. 오버로딩의 장점
- 메서드의 이름을 기억하기 쉽고 이름을 짧게 할 수 있어 오류의 가능성을 줄일 수 있다.
- 메서드의 이름을 절약할 수 있다.
4. 가변인자(varargs)와 오버로딩
가변인자 (varargs)
- ‘타입 변수명’과 같은 형식으로 선언하며 printf()가 대표적인 예이다.
- 내부적으로 배열을 이용하는 것이다.
- 매개변수의 타입을 배열로 하면 반드시 인자를 지정해 줘야 한다.
- concatenate메서드 : 매개변수로 입력된 문자열에 구분자를 사이에 포함해 반환.
- 가변인자를 선언한 메서드를 오버로딩하면 메서드 호출시 구별되지 못하는 경우가 있으므로 가변인자를 사용한 메서드는 오버로딩하지 않는다.
'Java' 카테고리의 다른 글
객체(Object) - 변수의 초기화 (0) | 2022.08.24 |
---|---|
객체(Object) - 생성자(Constructor) (0) | 2022.08.24 |
객체(Object) - 변수와 메서드 (0) | 2022.08.23 |
객체(Object) - 클래스와 객체 (0) | 2022.08.22 |
객체(Object) - 객체 지향 언어 (0) | 2022.08.22 |