JAVA 메소드 오버로딩

지정욱·2023년 11월 29일

메소드 오버로딩에 대해서 헷갈렸던 부분이 있었는데 계속 기억하기 위해서 작성해게 되었다. 내가 헷갈렸던 부분은 리턴타입이 같아야 오버로딩이 가능한 줄만 알았는데, 리턴타입은 상관이 없던 것이였다.

메소드는 한 클래스 내에, 이름은 같지만 매개변수의 개수나, 타입이 다르면 여러개의 메소드를 중복해서 작성할 수 있다. 이것을 바로 오버로딩이라고 한다.
그렇다면 왜 메소드 오버로딩을 사용하는 것일까?

바로 자바의 다형성을 하기 위해서이다.

여러개의 메소드가 오버로딩 되려면 두 조건을 만족해야 한다.

  • 메소드의 이름이 같아야 한다.
  • 매개변수의 타입이나 개수가 달라야 한다.

다음은 오버로딩의 실패사례이다.

public class MerhodOverloading{
	public int sum(int i, int j){
    	return i+j;
    }
    public double sum(int i, int j){
    	return (double)(i+j);
    }
}

실패한 이유는 바로 타입이 다르지도 않고, 개수도 다르지 않기 때문이다!

그럼 성공한 사례도 함께 보도록 하자.

 public class MethodOverloading{
        public int sum(int i){
            return i;
        }
        public double sum(int i, int j){
            return (double)(i + j);
        }
        public int sum(double i){
            return (int)i;
        }
    }

꼭 기억하도록 하자. 리턴 타입은 메소드를 구분하는 기준으로 사용하지 않는다는 것을!

profile
T자형 개발자가 되자

0개의 댓글