🌎 Web/Java
[Java] 메소드(method)
오늘 ONEUL
2022. 11. 28. 11:27
Chapter 06 클래스
06-1 객체 지향 프로그래밍
06-2 필드
06-3 생성자
06-4 메소드
06-5 인스턴스 멤버와 정적 멤버
06-6 패키지와 접근 제한자
06 클래스
06-4 메소드
시작하기 전에
- 메소드(method)란? 객체의 동작에 해당하는 중괄호 {} 블록을 의미한다.
- 메소드를 호출하면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다.
메소드 선언
- 메소드 선언은 선언부(리턴타입, 메소드 이름, 매개 변수 선언)와 실행 블록으로 구성된다.
- 이때, 메소드 선언부를 메소드 시그니처라 한다.
1. 리턴 타입
- 메소드를 실행한 후 결과값의 타입을 말한다.
- 리턴값은 있을 수도 없을 수도 있다.
- 리턴값 있을 경우 리턴 타입이 선언부에 명시되어야 한다.
- 리턴값 존재 여부에 따라 메소드 호출 방법이 다르다.
powerOn(); // 리턴 타잆 없음
double result = divide(10, 20) // 리턴 타입 double
int result = divide(10, 20) // 리턴 타입이 맞지 않으므로 컴파일 에러
- 리턴값이 중요하지 않고, 메소드 실행이 중요한 경우 변수를 선언하지 않고 메소드를 호출 할 수 있다.
2. 메소드 이름
- 숫자로 시작하면 안 되고, $와 _ 제외한 특수문자는 사용하지 않는다.
- 관례적으로 메소드 이름은 소문자로 작성한다.
- 서로 다른 단어가 혼합된 이름이라면 뒤이어 오는 단어의 첫 글자는 대문자로 작성한다. (camelCase)
- 메소드 이름의 길이는 프로그램 실행과 무관하니 너무 짧게 주지 않도록 한다.
void run() {...}
void startEngine() {...}
String getName() {...}
int[] getScores() {...}
3. 매개 변수 선언
- 메소드 실행에 필요한 데이터를 외부에서 받기 위해 사용된다.
- 리턴 타입과 마찬가지로 있을 수도 없을 수도 있다.
- 이때 매개값은 반드시 매개 변수의 타입에 부합되는 값이어야 한다.
잠깐, 매개 변수의 개수를 모른 다면?
- 매개 변수를 배열 타입으로 선언
int sum1(int[] values) { }
int values = {1, 2, 3};
int reuslt = sum1(values);
int result = sum1(new int[] {1, 2, 3, 4, 5});
- 배열을 생성하지 않고 값의 목록만 넘겨주는 방식
int sum2(int ... values) { }
int result = sum2(1, 2, 3);
int reuslt = sum2(1, 2, 3, 4, 5);
int[] values = {1, 2, 3};
int result = sum2(values);
int result = sum2(new int[] {1,2, 3, 4, 5})
리턴(return)문
1. 리턴값이 있는 메소드
- 메소드 선언에 리턴 타입이 있는 메소드는 리턴문을 사용하여 리턴값을 지정한다.
- return문의 리턴값은 리턴타입이거나 리턴타입으로 변환될 수 있어야 한다.
2. 리턴값이 있는 메소드
- void 선언된 메소드에서 return문을 사용하면 메소드 실행을 강제 종료시킨다.
메소드 호출
- 객체 내부에서 호출
메소드(매개값, ...); // 리턴값이 없거나 있어도 받고 싶지 않은 경우
타입 변수 = 메소드(매개값, ...); // 리턴값 있는 메소드 호출하고 리턴값 받고 싶은 경우
- 객체 외부에서 호출
클래스 참조변수 = new 클래스(매개값, ...); // 클래스로부터 객체를 생성해야 함
참조변수.메소드(매개값, ..); // 도트 연산자 사용하여 메소드 호출
메소드 오버로딩
- 오버로딩(overloading)이란?
- 클래스 내에 같은 이름의 메소드를 여러개 선언 하는 것을 의미한다.
- 오버로딩의 조건
- 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다
- 오버로딩의 필요성
- 매개값을 다양하게 받아 처리할 수 있도록 하기 위해서이다.
마무리 핵심 포인트
- 선언부: 메소드 선언부는 리턴 타입, 메소드 이름, 매개 변수 선언 부분을 말한다.
- void: 리턴값이 없는 메소드는 리턴 타입으로 void를 기술해야 한다.
- 매개 변수: 메소드 호출 시 제공되는 매개값은 메소드 선언부의 매개 변수에 차례대로 대입되어, 메소드 블록 실행 시 이용된다.
- 리턴문: 메소드 선언부에 리턴 타입이 있다면 리턴값을 지정하기 위해 return문이 반드시 있어야 한다. 리턴 타입이 void라면 return문은 필요없지만, 메소드 실행 종료를 위해 사용할 수도 있다.
- 호출: 메소드를 실행하려면 ‘메소드 이름(매개값…)’ 형태로 호출해야 한다.
- 오버로딩: 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 오버로딩이라고 한다. 메소드 오버로딩의 조건은 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다는 점이다.
※ 이 내용은 책 [혼자 공부하는 자바]를 보고 정리한 내용입니다.