메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

자바 200제 : 2개의 int형 정수 a, b의 최솟값, 3개의 int형 정수 a, b, c의 최솟값, 배열 a의 최솟값을 각각 구하자.

한빛미디어

|

2019-06-07

|

by 한빛

11,154

문제 :  2개의 int형 정수 a, b의 최솟값, 3개의 int형 정수 a, b, c의 최솟값, 배열 a의 최솟값을 각각 구하자. 

다음에 정의된 메서드 형식을 사용할 것.

int min(int a, int b) int min(int a, int b, int c) int min(int[] a)

 

03-1.jpg

 

메서드의 다중 정의(overload)

본질적으로 동일한 처리 또는 비슷한 처리를 하는 메서드에 다른 이름을 적용하면 관리하기가 어렵고, 어떤 것을 사용해야 할지 헷갈리는 상황도 발생할 수 있다. 이런 이유로 하나의 클래스 안에 동일한 이름의 메서드를 여러 개 작성하는 것이 허락된다. 동일 이름의 메서드를 동일 클래스 내에서 여러 번 선언하는 것을 ‘메서드를 다중 정의한다’고 표현 한다. 다중 정의는 영어를 그대로 사용해서 ‘오버로드’라고 부르기도 하니 2가지 표현을 모두 기억 하하자. 이 책에선 ‘다중 정의’라고 부른다. 12장에서 배울 ‘오버라이드’와 쉽게 구분하기 위해서다. overload는 ‘과적’, ‘과다’ 등의 의미이다. 이번 프로그램에선 2개의 int형, 3개의 int형 그리고 배열 요소에서 각기 최솟값을 구하는 메서드를 다중 정의한다. 메서드 호출 시에 어떤 메서드를 호출할지 지정할 필요는 없다. 상황에 맞게 선별 해서 호출하기 때문이다. 두 값의 최솟값을 구하는 메서드를 min2라고 명명하고 세 값의 최솟값을 구하는 메서드를 min3라고 명명하는 것은, 마치 은행 계좌를 열 때 은행마다 ‘홍길동A’, ‘홍길동B’ 등의 다른 명의를 사용하는 것과 같다. 비슷한 처리를 하는 메서드를 다중 정의하면, 프로그램 내에서 너무 많은 메서드명이 사용되는 것을 방지할 수 있다. ‘동일 시그니처signature의 메서드는 다중 정의할 수 없다’라는 제약이 있다. 시그니처란 [그림1]처럼, 메서드의 이름과 매개 변수의 개수, 형을 합친 것을 말한다. 반환형은 포함되지 않는다.

 

[그림 1] 메서드의 시그니처

03-2.jpg

 

‘동일 시그니처의 메서드는 다중 정의할 수 없다’는 것을 다른 말로 하면, 어떤 메서드를 호출해야 하는지 호출하는 측에서 명확히 구분할 수 있도록, 매개 변수의 형이나 개수를 다르게 정의해야만 한다’는 의미다. 반환형만 다른 메서드나 매개 변수의 이름만 다른 메서드를 다중 정의할 수 없다.

20190530113010_hyzbgqli.jpg

TAG :
댓글 입력
자료실

최근 본 상품0