[Java] 오버로딩

나지은·2023년 4월 25일
0
post-thumbnail

오버로딩

1. 오버로딩이란?

한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 의미한다.

2. 오버로딩의 조건

  • 메서드 이름이 같아야 한다.
  • 매개변수의 개수 또는 타입이 달라야 한다.

💡 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.

3. 오버로딩의 예

int add(int a, int b) {
	return a + b;
}

int (int a, int b, int[] arr) {
	int sum = 0;
	for (int i = 0; i < arr.length; i++{
		sum += arr[i];
	}
	return a + b + sum;
}

오버로딩의 잘못된 예 1

int add(int a, int b) {
 	return a + b;
}
int add(int x, int y) {
 	return x + y;
}

매개변수의 이름만 다를 뿐, 매개변수의 개수와 타입이 같기 때문에 오버로딩이 성립하지 않는다.

오버로딩의 잘못된 예 2

int add(int a, int b) {
	return a + b;
 }
int add(int a, int b) {
	return (long) (a + b);
}

매개변수의 타입과 개수가 같기 때문에 오버로딩이 성립하지 않는다.
반환 타입은 오버로딩에 영향을 미치지 않는다.

4. 오버로딩의 장점

오버로딩을 통해서 같은 기능을 하는 메서드들이 하나의 이름으로 정의가 가능하다.
만약 같은 기능을 하는 메서드이지만 한 클래스내의 모든 메서드들이 이름이 달라야 한다면, 메서드 선언을 위해 이름을 짓는데에도 어려움을 겪고, 이를 사용하기위해 메서드들을 일일이 구분하는데에도 어려움을 겪게된다.

참조
Java의 정석 3rd Edition

profile
즐거움을 찾는 개발자🐯

0개의 댓글