매서드
동일한 구조의 기능을 여러개 구현하고자 할 떄 중복을 제거하기 위해 매서드(함수) 사용.
수학에서 함수 개념을 차용해서 가져온 개념이다
함수를 한번 정의해두면 재사용이 가능하다
매서드는 함수의 한 유형이라 생각하면 된다
메서드 작성 방법
public static int 변수명 (파라미터 목록){ <<매서드 선언
함수 내용... <<매서드 본문
}
매서드 선언과 매서드 본문으로 나눌 수 있음
매개변수 목록에서는 매개변수들의 타입을 명시해준다
public: 다른 클래서에서 호출 가능한 매서드 라는 의미
static: 객체를 생성하지 않고 호출 가능한 매서드라는 의미
int: 반환 타입 정의
add: 매서드의 이름. 이 이름으로 매서드를 호출 할 수 있다
매서드 호출이끝나면 매서드는 해당 반환값을 반환한다.
매서드가 반환값으로 치환된다고 생각 할 수 있다.
매서드 호출이 끝나면 매서드 안에서 사용된 변수들의 메모리는 불필요한 공간이므로 파라미터 변수와 함수안에서 정의된 변수는 모두 제거된다.
매서드를 호출 할 때에는 매서드에 넘기는 값과 파라미터의 순서와 개수가 맞아야 한다.
인수(인자): 호출자 기준 넘겨주는 값을 의미. argument
매개변수: 매서드를 정의할 떄 선언한 변수. 파라미터. 매서드를 호출할 떄 인수를 넘기면 인수가 매개변수에 대입된다.
매서드 정의
매서드 호출을 먼저하고 아래에서 매소드 정의를 해줘도 된다.
public static int 매서드 이름(파라미터){
//매서드 본문
}
제어자 반환 타입(매개변수 목록){
메서드 본문
}
제어자: public, static과 같은 부분
반환 타입: 매서드가 실행된 후 반환하는 데이터 타입
매서드 이름: 매서드 호출에 사용
매개변수: 입력 값. 매서드 내부에서 사용
매서드 본문: 매서드의 코드
매개변수가 없거나 반환 값이 없는 경우
public static void 함수 이름(){
}
반환 타입이 없는 경우 viod사용. 반환 값이 없으므로 변수로 받을 수 없음
반환 타입이 있는경우
반드시 return 을 사용해야 함
반환 값이 없을 가능성이 있는 경우 컴파일 오류가 일어남
return 문을 만나면 그 즉시 매서드를 빠져나간다
코드가 남아있더라도 return문에 다다르면 매서드를 탈출
반환값이 있음에도 반환값을 사용하지 않을 수 도 있음
메소드 호출과 값 전달
자바는 항상 변수의 값을 복사하여 대입한다
num 2에 num 1이 저장되는게 아니라 num 2는 num 1 에 저장된 값인 5를 복사하여 값에 저장된다.
1호출 전: num1=5
2변경 전 num 2=5
3변경 후 num2=10
4호출 후 num1=5
원본은 변경되지 않고 저장되어있던 값을 복사하여 전달한다
결과적으로 num2의 값은 10으로 변경되고 num1의 값은 5로 유지된다.
본문의 변수 이름과 매개변수 이름이 같은 경우
main 함수 또한 함수임
각각의 매서드 안에서 사용되는 변수는 분리된 다른 변수. 이름이 같은 경우에도 둘은 다른 변수이다.
main에서 변수의 값이 함수 호출을 통해 바뀌길 원하는 경우 함수에서 결과값을 반환해주고 그 값을 메인에서 받아서 사용해준다.
매서드의 형변환
double타입을 int 에 넣을 수 있으므로 int로 형변환해 사용한다
double 형 매개변수에 int 형 매개변수를 전달하는것은 문제없이 잘 작동함
매서드 오버로딩
자바에서는 이름은 같고 매개변수의 개수, 타입이 다른 매서드가 존재할 수 있음
매서드의 구분에는 매서드의 이름 뿐 아니라 매개변수 정보까지 포함되어 이용된다.
이름이 같고 매개변수가 다른 매서드를 여러개 정의하는 것을 매서드 오버로딩이라 한다.
매개변수가 같고 반환타입이 다른경우에는 오버로딩이 아니라 함수를 여러번 정의한 것으로 판단하여 오류가 발생한다.
매서드 시그니처 = 매서드 이름 + 매개변수 타입
매서드 시그니처는 매서드를 구분하기 위한 매서드의 고유한 특징을 의미한다
매서드 시그니처를 이용하여 매서드를 구분한다
두 메서드는 이름이 add로 같지만 매개변수의 타입이 다르다
따라서 매서드 시그니처가 달라 다른 함수로 볼 수 있음
double을 매개변수로 선언하였더라도 int 형 인수가 주어졌을 경우에는 자동 형변환이 일어나 함수를 이용 가능하다.
'java 스터디' 카테고리의 다른 글
java 여름방학 2주차 (1) | 2024.07.14 |
---|---|
java여름방학 1주차 (0) | 2024.07.06 |
java스터디 6주차 (0) | 2024.05.24 |
java 5주차 (0) | 2024.05.17 |
java 스터디 4주차 (0) | 2024.05.15 |