[JAVA] 메서드(method)
변수의 생명주기
메서드를 자세히 보기 전에 변수의 생명주기에 대한 이해가 필요하다.
| 변수 종류 | 생명주기 |
| 지역변수 | 지역변수를 선안한 중괄호 내에서만 유효하다. |
| 매개변수(파라미터) | 메서드가 호출될 때 만들어지고 메서드가 끝나면 사라진다. |
| 객체변수 | 객체가 생성될 때 만들어지고, 그 객체를 참조하고 있는 변수가 없으면 사라진다. |
| 클래스변수 | 클래스가 처음 호출될 때 생명이 시작되고, 프로그램이 끝날 때 사라진다. |
메서드
- 메서드란 클래스 안에서 특정 기능을 수행하기 위해 코드들을 따로 하나의 블록으로 묶어놓은 집합이다.
- 필요에 따라 이 집합을 호출해서 사용할 수 있다.
- 우리는 메서드를 구현함으로써, 같은 내용의 코드를 반복적으로 작성해야 하는 상황을 피할 수 있다.
- 메서드의 작성은 메서드 밖에서 써야 한다.
메서드의 선언
- 메서드는 크게 머리(header)와 몸체(body)로 구성되어 있다.
접근제한자 반환형 메서드명(파라미터) {
작업할 내용;
return 반환값;
}
접근제한자, 반환형, 메서드명, 파라미터 이 3가지 단어는 익숙하지 않을 것이다.
접근제한자
- 이 메서드/필드/클래스에 대해 접근을 어디 범위까지 제한하느냐에 대한 지시어
| 접근제한자 | 범위 |
| public | 같은 프로젝트 내의 모든 객체들이 사용할 수 있도록 허용 |
| private | 현재 클래스 내에서만 사용을 허가 |
| protected | 상속관계의 객체들에게만 사용을 허가 |
| default | 같은 패키지내의 객체에서만 사용을 허가(기본값) |
반환형
- 메서드가 처음부터 끝까지 실행을 마친 후 반환해야 할 값이 있을 경우 기입
- int, char, boolean 등 기본자료형을 포함하여 String이나 사용자가 직접 만든 객체로도 반환이 가능
- 아무것도 반환하지 않을 경우 void를 기입.
메서드명
- 호출할 때 사용하기 위한 함수의 이름
- 첫 글자는 소문자로 시작한다.
파라미터(매개변수, 인자)
- 외부에서 해당 메서드를 통해 특정 값을 전달하고자 할 때,
그 값을 받아서 메서드(함수) 내부에서 처리할 수 있도록 하는 역할을 하는 변수
return
- 함수에서 모든 작업을 마치고 경우에 따라 실행한 결과를 호출한 곳으로 다시 돌려줘야 한다.
- 이건을 반환이라고 한다.
- 반환하는 결과값을 '반환값'이라고 부르기도 한다.
- 반환값이 있는 경우에는 반환할 데이터의 타입이 무엇인지 반환형을 기재해줘야 한다.
- 리턴값이 없는 경우 메서드를 종료하는 기능으로서 return을 작성할 수 있다.
메서드 예제
버스 교통카드 예제를 살펴보자
public class Bus {
public void take(int m) {
while(true) {
if (m < 3000) {
System.out.println("교통카드를 충전하러 갑니다.");
return;
}
System.out.println("버스를 탑니다.");
m -= 1500;
}
}
}
접근제한자 : public
반환형 : void
메서드명 : take
파라미터 : int m
public class BusMain {
public static void main(String[] args) {
Bus bus = new Bus();
int money = 10000;
bus.take(money); // 메서드(함수)의 호출
//함수의 호출은 반드시 함수 안에서 해야한다.
}
}
메서드의 호출은 객체명.메서드명(파라미터)이다.
우선 Bus객체를 생성을 해주고 생성용 클래스에서 만든 take메서드를 호출해 보자.
버스를 탑니다. //10000 -> 8500
버스를 탑니다. //8500 -> 7000
버스를 탑니다. //7000 -> 5500
버스를 탑니다. //5500 -> 4000
버스를 탑니다. //4000 -> 2500
교통카드를 충전하러 갑니다.
매개변수(파라미터)에 들어간 10000원이 버스를 타면서 1500원씩 빠져나가다가 3000원 미만으로 떨어지면 충전을 하러 가는 것을 볼 수 있다.
반환형이 있는 메서드
public class MethodTest {
//f(x) = 2x + 1
public int f(int x) {
return 2*x + 1;
}
}
반환값이 있는 경우 반환형 자리에 자료형을 써줘야 한다.
계산한 수의 결과를 반환할 것이니 정수형(int)을 반환형에 작성을 해준 뒤 return으로 반환을 해주자.
public class MethodMain {
public static void main(String[] args) {
MethodTest t = new MethodTest();
System.out.println(t.f(5));
//데이터를 반환해주는 것이기 때문에 출력문이나 변수안에다가 대입을 해줘야 한다.
}
}
[JAVA]setter&getter
setter & getter 란? - 객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다. - 예를 들어 자동차의 속도가 음수가 될 수 없는데, 외부에서 음수로 설정하면 무
treebomb-code.tistory.com