메소드 오버로딩(Method overloading)에 대해서 알아보자.
오버로딩(Overloading)
자바에서 한 클래스 내에서 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.
한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것을 "메소드 오버로딩(Method Overloading)" 또는 간단히 "오버로딩(Overloading)"이라 한다.
메소드 오버로딩 구분 요건은 아래와 같다.
- 메소드 이름이 같아야 한다.
- 매개변수의 개수, 타입 또는 순서가 달라야 한다.
- 반환 타입은 관계 없다.
위의 조건을 만족시키지 못하는 메소드는 중복 정의로 간주되어 컴파일 시에 에러가 발생한다. 그리고 오버로딩된 메소드들은 매개변수에 의해서만 구별될 수 있으므로 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.
ex) 매개변수 개수가 다른 경우의 메소드 오버로딩
ex) 매개변수 타입이 다른 경우의 메소드 오버로딩
ex) 매개변수 순서가 다른 경우의 메소드 오버로딩
ex) 반환타입은 오버로딩 구현하는데 아무런 영향을 주지 않아 컴파일 에러가 발생한다.
자바 가변인자(Varargs, Variable Argument List)
자바 1.5에서 추가된 가변인자 문법이다. "자료형타입 ... 배열명" 형식으로 이 문법은 매개변수 개수가 다른 메소드가 오버로딩 된 경우 그 인자 개수만큼 가변인자로 받아서 배열로 처리하면 한 개의 메소드만 정의하면 된다.
가변인자 문법을 사용하지 않으면, 인자개수만큼 중복 메소드명을 오버로딩 시켜야한다. 그만큼 불필요한 코드라인이 늘어나므로, 가변인자를 이용해 한 개의 메소드만 정의하면 코드줄 수가 줄어든다.
'언어공부 > Java' 카테고리의 다른 글
자바 this 레퍼런스, this. 와 this() (0) | 2021.05.09 |
---|---|
자바 생성자(Constructor), 생성자 오버로딩(Constructor Overloading), 초기화 블록 (0) | 2021.05.08 |
자바 접근 제어자 - private (동일 클래스 내에서만 사용 가능), public, default, private, 캡슐화 (0) | 2021.05.07 |
자바 기본형 매개변수/ 참조형 매개변수 / 참조형 반환타입 (0) | 2021.05.06 |
자바 메소드(Method) - 메소드 선언 / 메소드의 선언부 / 메소드의 구현부/ 지역변수/ 메소드의 호출 (0) | 2021.05.05 |