개발 일지/Java

[Java] 메서드 오버로딩(Method Overloading)

미숫가루설탕많이 2022. 12. 27. 23:59

 메서드 오버로딩(Method Overloading)이란, 같은 이름을 갖고 있지만 서로 다른 매개변수 형식을 갖고 있는 메서드를 여러 개 정의하는 것이다. 즉, 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것이다. 여기서 'overload'의 사전적 의미는 '과적하다/ 부담을 지우다'이다.

 

 메서드 오버로딩은 객체 지향 프로그래밍의 특징 중 하나인 다형성(polymorphism)을 구현하는 방법 중 하나이다.

 

 

 

 

오버로딩이 성립하기 위한 조건


 무조건 같은 메서드명을 사용한다해서 오버로딩이 되는 것은 아니다. 다음은 오버로딩이 성립하기 위한 조건이다.

 

  1. 메서드의 이름이 같아야 한다.
  2. 메서드의 시그니처 즉, 매개 변수의 개수 또는 타입이 다르게 정의되어야 한다.

 

 이 조건들 중에 하나라도 충족이 되지 않는다면 중복 정의로 간주되어 컴파일 에러가 발생하게 된다.

 

 참고로 반환 타입은 메서드 오버로딩과 관계가 없다. 즉, 다른 반환 타입을 지정했다고해서 가상 머신은 다른 메서드라고 인식하지 못한다. 만약 메서드의 시그니처는 같은데 반환 타입만 다른 경우에는 오버로딩이 성립하지 않는다.

 

 

 

 

오버로딩의 장점


 오버로딩의 가장 큰 장점은 하나의 메서드로 여러 경우의 수를 해결할 수 있다는 것이다. 또한, 하나의 이름으로만 기억하면 되므로 오류의 가능성을 많이 줄일 수 있다.

 

 오버로딩의 대표적인 예로 println() 메서드가 있다. println() 메서드 내부를 살펴보면 매개 변수의 타입에 따라서 호출되는 println 메서드가 달라진다는 사실을 알 수 있다.

 

 만약 오버로딩이 지원되지 않았다면 일일이 메서드를 정의해줘야 하는 번거로움이 발생했을 것이다. 오버로딩을 통해 같은 기능을 하는 메서드의 이름을 계속 지어주지 않아도 되고 이름만 보고도 기능을 쉽게 예측할 수 있다.

'개발 일지 > Java' 카테고리의 다른 글

[Java] this 와 this()  (0) 2022.12.28
[Java] 생성자(Constructor, ctor)  (0) 2022.12.28
[Java] 메서드(Method)  (0) 2022.12.27
[Java] static 키워드  (0) 2022.12.27
[Java] 필드(Field)  (0) 2022.12.27