티스토리 뷰
오버 로딩
한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버 로딩(method overloading)' 또는 '오버 로딩(overloading)'이라고 한다.
오버 로딩 조건
1. 메서드 이름이 같아야 한다.
2. 매개변수의 개수 또는 타입이 달라야 한다.
※ 반환 타입은 오버 로딩을 구현하는데 아무런 영향을 주지 못한다.
오버 로딩의 대표적인 예
오버로딩의 대표적인 예로는 println 메서드가 있는데, PrintStream클래스에는 어떤 종류의 매개변수를 지정해도 출력할 수 있도록 아래 10개의 오버 로딩된 println 메서드를 정의해놓고 있다.
즉, println 메서드를 호출할 때 매개변수로 넘겨주는 값의 타입에 따라서 아래 오버 로딩된 메서드들 중의 하나가 선택되어 실행된다고 한다.
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)
예제 1
int add (int a, int b) { return a+b; }
int add (int x, int y) { return x+y; }
→ 위 두 메서드는 매개변수의 이름(a, b, x, y)만 다를 뿐 매개변수의 타입이 같기 때문에 오버 로딩이 성립되지 않는다.
'F(x) = x + 1'과 'F(a) = a + 1' 과 같은 표현
예제 2
int add (int a, int b) { return a+b; }
long add (int a, int b) { return (long) a+b; }
→ 예제 2는 리턴 타입만 다른 경우이다. 매개변수의 타입과 개수가 일치하기 때문에 어떤 메서드가 호출됐는지 결정할 수 없어 오버 로딩으로 간주되지 않는다.
예제 3 👍
long add (int a, long b) { return a+b; }
long add (long a, int b) { return a+b; }
→ 예제 3은 매개변수 타입이 같지만 순서가 다른 경우이다. 이 경우에는 메서드 호출 시 매개변수의 값에 의해 호출될 메서드가 구분될 수 있으므로 중복된 메서드 정의가 아닌 오버로딩으로 간주한다.
오버 로딩의 장점
오버 로딩을 통해 여러 메서드들이 println 메서드처럼 하나의 이름으로 정의되어 기억하기 쉽고 오류의 가능성을 많이 줄일 수 있다.
또한 메서드의 이름을 절약할수 있어, 동시에 사용되었어야 할 이름을 다른 메서드의 이름으로 사용할 수 있는 장점이 있다.
'study > Java' 카테고리의 다른 글
상속 (inheritance) (0) | 2022.11.16 |
---|---|
생성자 (constructor) (0) | 2022.11.10 |
기본형 매개변수와 참조형 매개변수 (0) | 2022.10.14 |
Java Project Create - vscode (Mac 기준) (0) | 2022.10.06 |
Variable (0) | 2022.10.04 |
- Total
- Today
- Yesterday
- django
- Magazine K
- 웹페이지
- django.contrib.auth
- git공부
- 배열
- error: failed to push some refs to 'https://github.com/
- 혼자 공부하는 파이썬
- authenticate()
- 한글 형태소 분석기
- 회원가입
- 암호화
- 디자인 패턴
- 톰캣
- Java
- Django tutorial
- Spring
- 회원 로그인
- django-environ
- musma
- git 공부
- 면접을 위한 CS 전공 지식 노트
- python3
- 커맨드 객체
- 검색 결과 내 페이지네이션
- 환경 변수 설정
- git
- path variable
- API
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |