본문 바로가기
그 외 프로그래밍 언어/Java

자바, 메소드 오버로딩 (중복정의)

by Dreaming Coder 2021. 12. 11. 23:19

 


 

이번에는 메소드 오버로딩(중복정의)에 대해서 배워보겠습니다.

 

 

 

지난 포스트

 

자바, 제곱 값 구하는 메소드 만들기

자꾸 새로운 문제들로 메소드를 반복하고 있는데, 문제를 푸는 것보다 중요한 것은 메소드에 익숙해지는 것입니다. 이번에도 메소드의 동작 원리에 익숙해지는 것을 의식하면서 공부해봅시다.

gogogameboy.tistory.com

 

 

 

오버로딩

 

나중에 배울 내용 중에서 '오버라이딩'이라는 녀석도 나옵니다.

비슷한 이름이라 헷갈릴 수도 있으니 지금부터 오버로딩 (중복정의)라고 8글자로 외워둡니다.

오버로딩중복정의다.

 

 

 

package 메소드응용;

public class Ex02_메소드오버로딩 {
	
	public static void main(String[] args) {
		System.out.println(add(7,4));	
	}

	private static int add(int i, int j) {
		// TODO Auto-generated method stub
		return i+j;
	}

}

 

일단 이렇게 생긴 코드로 시작을 해보겠습니다.

눈으로 보기만 하셔도 되고, 따라 해보실 분들은 아래의 코드를 가져가셔서 따라해보시길 바랍니다.

 

 

 

위의 소스 코드는 PC에서 드래그 후,
ctrl+x로 잘라내서 다른 곳으로 붙여넣기가 가능합니다.
ctrl+c(복사)는 불가능합니다.

 

 

 

 

int 타입의 정수 두 개를 받아서 덧셈을 하는 add()라는 메소드가 있는데,

거기에 실수(소수까지 표현하는 숫자)의 덧셈을 하는 코드를 한 줄 추가시켰더니 에러가 떠있습니다.

 

 

 

에러가 떠있으면 항상 확인해보는 습관..!

int 타입의 정수를 받아야 하는 메소드의 매개변수로 실수를 넣었다고 합니다.

 

해결 방법으로 두 가지의 방법을 제시하고 있는데,

첫 번째 방법은, add() 메소드의 리턴 타입을 int에서 double로 바꾸라고 합니다.

그런데 이렇게 바꾸면, 이젠 처음부터 있었던 코드인

System.out.println(add(7,4)); 에서 에러가 뜹니다. 해결이 안 됩니다.

 

두 번째 방법은, 리턴 타입과 매개변수가 double 타입인 add()메소드를 만들어라고 합니다.

두번째 것을 클릭하면,

 

 

 

 

똑같은 add라는 이름의 메소드가 자동 생성됩니다.

수정할 부분을 수정해줍시다.

char[]double로 바꾸고, return null;return d+e;로 바꿔줍니다.

 

 

 

이렇게 제대로 수정을 해주고 실행을 시켜보면,

 

 

 

이렇게 같은 add()라는 이름의 하나의 메소드로 정수의 덧셈도 가능하고 실수의 덧셈도 가능하게 됩니다.

 

이것을 메소드 오버로딩(중복정의)이라고 합니다.
메소드의 이름은 하나만 주고, 매개변수의 타입과 개수를 다르게 함으로써 중복으로 정의하는 기법입니다.

 

그런데 사실 우리는 이 메소드 오버로딩을 자바를 거의 처음 배운 순간부터 쭈욱 사용해오고 있었습니다.

그것은.. 출력문을 쓸 때 항상 사용했던, System.out.println(); 이라는 메소드입니다.

 

생각해보세요.

이 코드 안에는 정수도 들어가고, 문자도 들어가고, 불리언 타입의 데이터도 들어갑니다.

우리들이 사용하기 편하게 이미 누군가가 만들어놓은 오버로딩이 된 메소드였던 것입니다.

 

 

 

 

 

 

다음 포스트

 

자바, 객체지향 프로그래밍 (OOP)

갈수록 점점 더 어려워집니다. 이번에는 메소드보다 더 큰 벽인 객체지향 프로그래밍(Object Oriented Programming)에 대해서 배워보겠습니다. 지난 포스트 자바, 메소드 오버로딩 (중복정의) 이번에는

gogogameboy.tistory.com

 

 

 


이 글이 도움이 됐다면 하단의 공감 버튼을 꾹 눌러서
빨간 하트로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.

 


 


댓글