TIL 34 | [Java] 메소드 오버로딩

Yoonsik·2022년 8월 14일
0

JAVA

목록 보기
8/11

메소드 오버로딩 이란?

메소드 오버로딩은 한 클래스 내에 이름은 같지만 매개변수 type이나 개수가 다른 여러개의 메소드를 중복작성 할 수 있는 것으로, 자바 다형성의 한 경우 입니다.

메소드 오버로딩의 조건

  • 메소드의 이름이 같아야 한다.
  • 매개변수의 개수나 type이 달라야 한다.
      (생성자 여러개 작성하는 것과 비슷)
      

메소드 오버로딩 실패 사례

이때, 메소드의 리턴type이 다르다고 해서 이름, 매개변수의 개수나 type이 같은 메소드가 다른 메소드가 되지 않습니다.

리턴type은 메소드를 구분하는 기준이 될 수 없습니다.

💻 EX)

public class MethodOverloadingFailEx {
	public int getSum(int a, int b) {
		return a + b;
	}

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

위 두개의 getSum()메소드는 리턴type은 다르지만 매개변수 개수와 타입이 모두 같으므로, 이 두 메소드는 호출자의 입장에서 구분이 불가능합니다.

따라서 자바 컴파일러는 오류를 발생시킵니다.


메소드 오버로딩 성공 사례

💻 EX)

public class MethodSample {
	static int getSum(int a, int b) {
		return a + b;
	}
	
	static int getSum(int a, int b, int c) {
		return a + b + c;
	}
	
	static double getSum (double a, double b) {
		return a + b;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MethodSample a = new MethodSample();
		
		int i = a.getSum(1, 2);
		
		int j = a.getSum(1, 2, 3);
		
		double k = a.getSum(1.2, 1.3);
		
		System.out.println(i);
		System.out.println(j);
		System.out.println(k);
	}
}

위 코드의 3개의 메소드 getSum()은 이름은 같지만 서로 매개변수의 개수나 type이 다르므로, 호출자 입장에서 구분이 가능하기 때문에 오버로딩이 성공적으로 이루어 집니다.


profile
꾸준함의 힘

0개의 댓글