티스토리 뷰

Java

메소드 오버로딩(method overloading)

siyoon210 2018. 10. 31. 09:57
반응형

오버로딩이란?

같은 이름의 메소드를, 다른 매개변수를 받아 동작하도록 재정의 하는 것이다.

예를들어, 아래와 같은 2개의 정수를 받아 합계를 반환하는 sum이라는 함수가 있다고 가정 해보자

public int sum(int a, int b){
    return a+b;
}

그리고 sum과 같은 이름의 메소드를, 다른 매개변수 실수 2개를 받아 동작하도록 재정의 하면,

public double sum(double a, double b){
    return a+b;
}

같은 이름의 메소드가 중복되어 존재할 수 있다.


언제사용할까?

간단히 오버로딩이 불가능 하다고 생각해보자. 위의 예제 sum 함수는 매개변수의 타입 혹은 매개변수의 갯수에 따라서 다른 이름의 메소드들이 존재해야 할 것이다. 

public int sumInt(int a, int b);
public double sumDouble(double a, double b);
public int sumThreeInt(int a, int b, int c);
public double sumThreeDouble(double a, double b, double c);
. 
.
.

sum함수를 쓰고자 하는 사용자는 매개변수의 따른 모든 메소드 명을 기억하고 찾아야 할 것이다.


오버로딩 선언 조건

  1. 메소드의 이름이 같아야한다.
  2. 메소드 매개변수의 갯수나 타입이 달라야한다.
  3. 메소드의 리턴타입은 오버로딩에 영향을 주지 않는다.


오버로딩시 주의사항

  • 오버로딩을 하다보면 같은 로직을 수행하는 코드의 중복이 발생하게 될 수 있다. 이런 경우 this키워드를 적절히 사용하면 코드의 중복을 피하고, 간결하게 작성할 수 있다.
  • 오버로딩시 가장 중요한 점은 다른 매개변수를 받는다는 점이다. 반환타입은 경우에 따라 바뀔 수도 있고, 바뀌지 않을 수도 있다. 매개변수가 동일하고 리턴타입이 다른 경우는 오버로딩이 선언되지 않는다.
반응형
댓글