15 메소드(method)
메소드란?
쉽게 말하자면 이름 뒤에 소괄호()가 오는 애들!
(하지만, 키워드 뒤의 () 는 메소드가 아니다. ex) for,while....)
어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있다.
사실 우리는 이미 메소드를 많이 사용했다. 바로 main 메소드다.
메소드를 사용하는 이유
1. 반복되는 기능, 코드를 쉽게 관리하기 위해 사용
2. 소스코드 간결화를 위해 사용
메소드를 사용하지 않으면 main안에 너무 많은 코드가 존재한다.
ex) 100줄의 코드가 메소드 안에 있는것을 10줄 메소드 10개로 나눈다면?
main안에 메소드를 호출하는 10줄만 존재한다.
메소드의 구조
①리턴타입 ②메소드명(자료형 ③매개변수, 자료형 매개변수,...){
④호출시 실행할 문장
⑤return 리턴값;
}
① 리턴타입 : return 뒤의 값의 타입에 맞는 자료형을 작성해준다. 리턴값이 없는 때에는 void로 작성한다.
② 메소드명 : 동사형으로 작성한고 소문자로 작성한다. ex) eat("치킨") eat("밥")
③ 매개변수 : 매개변수는 생략이 가능하다. 하지만 생략시에는 외부(사용하는곳)에서 값을 전달 받을 수 없게 된다.
여러 값들을 전달 받아야 할 때에는 , 로 구분하여 값의 개수만큼 선언해준다.
사용시에는 반드시 매개변수의 타입과 개수에 맞게 순서대로 값을 전달해주어야 한다.
④ 호출시 실행할 문장 : 생략 가능하다
⑤ 리턴값 : 생략 가능하다
메소드 선언 순서
두 정수의 덧셈 메소드를 만들어보자 :)
1. 메소드 명을 생각한다.
add(){
}
2. 매개변수를 생각한다.
add(int num1, int num2){
}
3. 실행할 문장을 생각한다.
add(int num1, int num2){
System.out.println("두 정수의 덧셈 메소드");
int result = num1 + num2
}
4. 리턴값을 생각한다.
add(int num1, int num2){
System.out.println("두 정수의 덧셈 메소드");
int result = num1 + num2
return result;
}
5. 리턴 타입을 알맞게 작성한다.
int add(int num1, int num2){
System.out.println("두 정수의 덧셈 메소드");
int result = num1 + num2
return result;
}
메소드 사용
메소드는 클래스 내부에 만들어져 있으므로 그 메소드가 속해있는 클래스의 타입으로
먼저 변수를 만들어 주어야 한다. (객체화를 진행해 주어야 한다.)
※객체 : 클래스 타입의 변수
아래는 가장 기본형인 객체화 방법이다.
클래스명 변수명 = new 클래스명();
1. 매개변수의 개수와 타입에 맞게 값을 넘겨주어야한다.
ex ) 변수명.메소드명(값1,값2....);
2. 매개변수가 없는것은 그대로 이름으로 사용한다.
ex ) 변수명.메소드명();
메소드 사용 부분은 선언부 마지막에 return 값이 있다면 사용한 부분 통채로를 그 리턴값으로 보아야한다.
단, return 값이 없다면 사용부분을 절대 값으로 봐서는 안된다.
리턴(return)
리턴을 사용해야 할 때
- 메소드 내부에서 모든 기능이 구현되지 않을 때
- 사용하는 부분에서 아직 할 작업이 남았을 때
- 메소드의 처리 결과를 사용하는 부분에 알려주어야 할 때
리턴을 사용하지 않아도 될 때
- 메소드 내부에서 모든 기능이 구현될 때
메소드를 사용하여 간단한 연산을 해보자ψ(`∇´)ψ
public class Calc {
public static void main(String[] args) {
Calc mycalc = new Calc(); // 객체화
mycalc.add(10, 5); // 10 + 5
mycalc.minus(7, 5); // 7 - 5
mycalc.div(9, 3); // 9 / 3
mycalc.gob(5, 4); // 5 * 4
}
void add(int num1, int num2){ // 더하기 메소드
int result = num1 + num2;
System.out.println(num1 + " + "+num2 +" = "+ result);
}
void minus(int num1, int num2){ // 빼기 메소드
int result = num1 - num2;
System.out.println(num1 + " - "+num2 +" = "+ result);
}
void div(int num1, int num2){ // 나누기 메소드
int result = num1 / num2;
System.out.println(num1 + " / "+num2 +" = "+ result);
}
void gob(int num1, int num2){ // 곱하기 메소드
int result = num1 * num2;
System.out.println(num1 + " * "+num2 +" = "+ result);
}
}
10 + 5 = 15
7 - 5 = 2
9 / 3 = 3
5 * 4 = 20