[Java의 정석]Chapter6.객체지향 프로그래밍(14~17)
Chapter 6. 객체지향 프로그래밍
14. 메서드란?
메서드(method)
: 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것- 함수와 유사하며, 어떤 값을 입력하면 이 값으로 작업을 수행해서 결과 반환
- 수학의 함수와 달리 메서드는 입력값 또는 출력값(결과값)이 없을 수도 있으며, 심지어 입력값과 출력값이 모두 없을 수도 있음
- 메서드가 작업을 수행하는데 필요한 값만 넣고 원하는 결과만 얻으면 될 뿐, 내부적으로 어떤 과정을 거쳐 결과를 만들어내는지 몰라도 됨(그래서 메서드를 내부가 보이지 않는 '블랙박스(black box)'라고도 함)
- 메서드는
선언부(header,머리)
와구현부(body,몸통)
으로 구성
▶메서드를 정의한다는 것은 선언부와 구현부를 작성하는 것을 의미
15. 메서드의 선언부
메서드 선언부
:메서드의 이름
,매개변수 선언
,반환타입
으로 구성- 메서드가 작업을 수행하기 위해 어떤 값들을 필요로하고 작업의 결과로 어떤 타입의 값을 반환하는지에 대한 정보를 제공
int(반환타입-출력) add(메서드 이름) (int x, int y)(매개변수선언-입력)
int add (int x, int y) {
int result = x + y;
return result; //결과를 반환
}
- 메서드의 선언부를 변경하게 되면 메서드가 호출되는 모든 곳이 함께 변경되어야 하므로 신중히 작성
🍰 매개변수 선언(parameter declaration)
- 매개변수는 메서드가 작업을 수행하는데 필요한 값들(입력)을 제공받기 위한 것
- 필요한 값의 개수만큼 변수를 선언하며 각 변수 간의 구분은
쉼표 ,
사용 - 일반적인 변수선언과 달리 두 변수의 타입이 같아도 변수의 타입 생략 불가능
int add(int x, int y) { . . . } //Ok
int add(intx, y) { . . . } //에러. 매개변수 y의 타입 생략됨
- 매개변수의 선언에는 제한이 없지만, 입력해야할 개수가 많은 경우 배열이나 참조변수 사용
- 값을 전혀 입력받을 필요가 없다면 괄호( ) 안에 아무것도 적지 않음
☕ 반환타입(return type)
- 메서드의 작업수행 결과(출력)인 '반환값(return type)'을 적음
- 반환값이 없는 경우 반환타입으로
'void'
를 적어야 함
void print99danAll() { //작업수행 입력값도 반환값도 없어서 'void'
for(int i=1; i<=9; i++) {
for(int j=2; j<=9; j++) {
System.out.print(j+"*"+i+"="+(j*i)+" ");
}
System.out.println();
}
}
16. 메서드의 구현부
메서드의 구현부
: 메서드의 선언부 다음에 오는괄호{ }
- 괄호{ }에 메서드를 호출했을 때 수행될 문장들을 넣음
🌮 return문
- 메서드의 반환타입이 'void'가 아닌 경우, 구현부{ } 안에
'return 반환값;'
반드시 포함되어야 함 - return문은 작업을 수행한 결과인 반환값을 호출한 메서드로 전달
- return문의 값의 타입은 반환타입과 일치하거나 적어도 자동 형변환이 가능한 것
- 여러 개의 변수를 선언할 수 있는 매개변수와 달리 return문은 단 하나의 값만 반환 가능
▶메서드로의 입력(매개변수)은 여러 개일 수 있어도 출력(반환값)은 최대 하나만 허용
int add(int x, int y) //int와 return문의 result의 타입이 일치
{
int result = x + y;
return result; //자가업 결과(반환값)를 반환
}
🍺 지역변수(local variable)
- 메서드 내에 선언된 변수들은 그 메서드 내에서만 사용가능하므로, 서로 다른 메서드라면 같은 이름의 변수 선언 가능
- 메서드 내에 선언된 변수를
지역변수(local variable)
이라 함 - 매개변수도 메서드 내에 선언된 것으로 간주하므로 지역변수임
int add(int x, int y) {
int result = x + y;
return result;
}
int multiply(int x, int y) {
int result = x * y;
return;
}
▶메서드 add와 multiply에 각기 선언된 변수 x,y,result는 이름만 같을 뿐 서로 다른 변수임
17. 메서드의 호출
- 메서드를 호출해야만 구현부{ }의 문장들이 수행됨
(main 메서드는 프로그램 실행 시 OS에 의해 자동적으로 호출됨)
메서드 이름(값1, 값2, ...); //메서드를 호출하는 방법
print99danAll(); //void print99danAll()을 호출(입출력값 없으므로 (공백)
int result = add(3,5) //int add(int x, int y)를 호출하고 결과를 result에 저장
🌽 인수(argument)와 매개변수(parameter)
- 메서드를 호출할 때 괄호( )안에 지정해준 값들을
'인수(argument)'
또는'인자'
라고 함 - 인수의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 함
- 인수는 메서드가 호출되면서 매개변수에 대입되므로, 인자의 타입은 매개변수의 타입과 일치하거나 자동 형변환이 가능한 것이어야 함
int result = add(1,2,3); //error. 메서드에 선언된 매개변수의 개수가 다름(각각 타입 기재)
int result = add(1.0, 2.0); //error. 메서드에 선언된 매개변수의 타입이 다름(타입 변환필요)
▶반환타입이 void가 아닌 경우, 메서드가 작업을 수행하고 반환한 값을
대입연산자로 변수에 저장하는 것이 보통이지만, 저장하지 않아도 문제가 되지 않음
int result = add(3,5); //int add(int x, int y)의 호출결과를 result에 저장
add(3,5); //OK. 메서드 add가 반환한 결과를 사용하지 않아도 됨
Author And Source
이 문제에 관하여([Java의 정석]Chapter6.객체지향 프로그래밍(14~17)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wendy1126/Java의-정석Chapter6.객체지향-프로그래밍1417저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)