2022/02/14
메서드 (Method)
어떠한 작업을 수행하기 위한 명령문들의 집합. main()도 메서드의 일종.
메서드: 연산을 처리하는 곳.
변수: 그 결과를 저장하는 곳
메서드는 어떤 값을 입력받아 처리하고, 그 결과를 하나 돌려줄 수 있는 구조. -> 결괏값, 리턴 값.
목적 & 장점: 재사용이 가능. 반복적인 코드 작성을 줄일 수 있음. 필요할 때마다 메서드로 묶어놓는다. 코드 관리가 용이함. 재사용성을 높이기 위해서 한 가지 메서드는 한 가지 기능만 하도록 작성하는 게 좋다.
1. 메서드 정의와 사용:
① 입력값, 리턴값 없는 경우
정의:
리턴 타입-> void 메서드명 (){
//수행할 코드들……
}
----------------------------
사용(호출):
메서드명();
② 입력값, 리턴 값 둘 다 있는 경우
정의:
리턴 타입 메서드명(타입 파라미터 명, 타입 파라미터 명)(외부에서 던져줄 타입에 맞춰서, 필요한 개수만큼 적어줌){
//수행할 코드들……
return 값;
}
----------------------------
사용(호출):
변수 = 메서드명(인자, 인자); //파라미터의 개수만큼, 타입도 일치하게
2. 용어 정리
① 리턴 타입: 작업을 수행하고 리턴해줄 데이터의 타입을 명시해주는 것.
리턴되는 값과 동일한 데이터 타입을 명시.
리턴이 없으면 void라고 작성.
② 메서드명: 메서드 이름 (변수 명명규칙 참고)
③ 파라미터 == 매개변수. 메서드에 외부로부터 입력받을 데이터를 받아줄 변수. 없으면 괄호 비워두기.
④ return: 메서드를 호출한 곳으로 값을 돌려주는 키워드.
A. 메서드를 종료시킴
B. 뒤에 적힌 값을 호출한 곳으로 돌려줌.
리턴 타입이 void가 아닌 이상 반드시 return 값이 있어야 함.
리턴 타입과 return 뒤에 기입할 데이터의 타입이 동일해야 한다.
void 리턴 타입에서도 어떤 조건에 의해 메서드가 중간에 강제 종료되어야 할 때는 return; 키워드로 처리가 가능.
⑤ 인자: 매개변수, 인수, arguments: 메서드를 호출할 때, 메서드에게 보내줄 데이터. 인자-> 파라미터.
⑥ 변수: 메서드 실행 후 return으로 돌려받은 결괏값 저장해 줄 변수
주의! 인자와 파라미터의 개수/ 순서/ 데이터 타입은 반드시 일치해야 한다!!
3. 메서드 종류
① 클래스 메서드: static 붙은 메서드
객체 생성 안 하고 바로 사용 가능. ex) Math.random()
호출> 클래스명. 메서드명();
② 인스턴스 메서드: 일반 메서드
객체 생성 수 사용 가능.
같은 클래스 안에서 서로 호출하면(자기네끼리 부르면..), 객체 생성 안 하고 바로 사용 가능 -> 메모리 생성 시기가 같아서 가능.
③ main() 메서드: 클래스 메서드
public static void main(String [] args) {
//코드 작성……
}
public: 접근 지정자: 전체 공개
static: 클래스 메서드 선언 프로그램 시작하자마자 자동으로 호출해서 사용돼야 하기 때문에 static이 돼야 한다.
void: 리턴 타입: 리턴해줄 게 없다.
(String [] args): 매개변수 배열. 객체를 보내면 객체를 받아줄 변수. 스트링이라 모든 타입 다 가능.
{}: 메인 메서드 영역
인자 전달 방식
1. 자바의 인자 전달 방식(argument passing)은 “값에 의한 호출: Call-by-value”이다. 호출하는 실제 인자의 값이 복사되어 메서드의 파라미터에게 전달된다.
① 기본형 값 전달: read only: 값만 전달해줌. 원본 훼손 x
② 참조형 값 전달: read & write: 객체의 레퍼런스(주소 값)가 전달.
재귀 호출 recersive call
메서드 안에서 자기 자신을 호출하는 것을 말함.
반복문으로 바꿀 수 있으며 속도 면에서는 반복문보다는 재귀가 훨씬 빠르다.
메서드 오버 로딩(Method overloading)
1. 한 클래스 내에, 이름이 같지만 매개변수의 타입이나 개수가 서로 다른 여러 개의 메서드를 중복 작성 가능. 이를 메서드 오버 로딩이라 한다. (자바의 특징 중 하나인 다형성에 해당)
2. 메서드 오버 로딩이 될 수 있는 조건
① 메서드 이름이 동일해야 함
② 매개변수의 개수가 다르거나 데이터 타입이 서로 달라야 함.
주의!! 매개변수의 이름이 다른 것은 조건에 해당되지 않고 리턴 타입 또한 조건에 해당 안됨.
③ 메서드 오버 로딩은 자바 컴파일러에 의해 판단되며, 컴파일러가 이름이 같은 메서드들을 구분할 수 있으면 오버 로딩 성공. 컴파일러가 메서드 이름과 매개변수의 개수 or 타입 일치하는 메서드를 찾아냄.
--
지난주에 클래스 부분은 좀 멘붕이었는데 주말 동안에 다시 보고 개념을 잡았다.
그리고 오늘 새벽에 객체 공부하면서 메서드도 같이 봤었는데 오늘 수업에 마침 메서드가 나와서 뿌듯했다^^
덕분에 메서드는 메서드는 비교적 수월하게 이해함
이해와 직접 써보고 익히는건 다른 문제이므로.. 열심히 연습 문제를 풀어보자