이번에는 메소드 오버로딩(중복정의)에 대해서 배워보겠습니다.
지난 포스트
오버로딩
나중에 배울 내용 중에서 '오버라이딩'이라는 녀석도 나옵니다.
비슷한 이름이라 헷갈릴 수도 있으니 지금부터 오버로딩 (중복정의)라고 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(); 이라는 메소드입니다.
생각해보세요.
이 코드 안에는 정수도 들어가고, 문자도 들어가고, 불리언 타입의 데이터도 들어갑니다.
우리들이 사용하기 편하게 이미 누군가가 만들어놓은 오버로딩이 된 메소드였던 것입니다.
다음 포스트
이 글이 도움이 됐다면 하단의 ♡ 공감 버튼을 꾹 눌러서
빨간 하트♥로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS에 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.
'그 외 프로그래밍 언어 > Java' 카테고리의 다른 글
자바, 간단한 객체지향 프로그래밍을 해봅시다. (0) | 2021.12.12 |
---|---|
자바, 객체지향 프로그래밍 (OOP) (0) | 2021.12.12 |
자바, 제곱 값 구하는 메소드 만들기 (0) | 2021.12.11 |
자바, 메소드(method)의 기본 구조 빠르게 만드는 법 (0) | 2021.12.11 |
자바, 메소드(method) 실습 2 (0) | 2021.12.11 |
댓글