본문 바로가기

언어공부/Java

자바 메소드 오버로딩(메서드 오버로딩, Method Overloading), 자바 가변인자(Varargs, Variable Argument List)

메소드 오버로딩(Method overloading)에 대해서 알아보자. 

오버로딩(Overloading)

자바에서 한 클래스 내에서 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.

 

한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것을 "메소드 오버로딩(Method Overloading)" 또는 간단히 "오버로딩(Overloading)"이라 한다.

 

메소드 오버로딩 구분 요건은 아래와 같다.

  • 메소드 이름이 같아야 한다.
  • 매개변수의 개수, 타입 또는 순서가 달라야 한다.
  • 반환 타입은 관계 없다.

위의 조건을 만족시키지 못하는 메소드는 중복 정의로 간주되어 컴파일 시에 에러가 발생한다. 그리고 오버로딩된 메소드들은 매개변수에 의해서만 구별될 수 있으므로 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.

 

ex) 매개변수 개수가 다른 경우의 메소드 오버로딩

 

매개변수 개수가 다르다.

 

메소드이름이 같아도 인자의 개수가 다르기 때문에 알아서 인식된다.

 

ex) 매개변수 타입이 다른 경우의 메소드 오버로딩

 

매개변수 자료형 타입이 다르다.

 

메소드이름이 같아도 인자의 자료형 타입이 다르기 때문에 알아서 인식된다.

 

ex) 매개변수 순서가 다른 경우의 메소드 오버로딩

 

매개변수 순서가 다르다.

 

메소드이름이 같아도 인자의 순서가 다르기 때문에 알아서 인식된다.

 

ex) 반환타입은 오버로딩 구현하는데 아무런 영향을 주지 않아 컴파일 에러가 발생한다.

 

리턴타입을 다르게 한 오버로딩 문법은 적용 안된다.


자바 가변인자(Varargs, Variable Argument List)

자바 1.5에서 추가된 가변인자 문법이다. "자료형타입 ... 배열명" 형식으로 이 문법은 매개변수 개수가 다른 메소드가 오버로딩 된 경우 그 인자 개수만큼 가변인자로 받아서 배열로 처리하면 한 개의 메소드만 정의하면 된다.

 

가변인자 문법을 사용하지 않으면, 인자개수만큼 중복 메소드명을 오버로딩 시켜야한다. 그만큼 불필요한 코드라인이 늘어나므로, 가변인자를 이용해 한 개의 메소드만 정의하면 코드줄 수가 줄어든다.

 

가변인자를 이용해 메소드를 생성.

 

메인 메소드에서 p메소드 호출.

 

출력 화면