[Java의 정석]Chapter6.객체지향 프로그래밍(14~17)

12893 단어 JavaJava의 정석Java

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가 반환한 결과를 사용하지 않아도 됨


좋은 웹페이지 즐겨찾기