메소드 (Method)
● 메소드
• 프로세스에서 기능을 수행하기 위한 명령문의 집합(Instruction Set) - 기계적 의미
• Function – 직관적 의미
• 메소드 컴파일 -> Instruction Set Function
▶ 좋은 메소드란?
필요한 핵심 기능만 넣고, 함수를 만들었을 때, 다른 사람이 쓸 수 있는지(Reuse), 이름만 봐도 알 수 있고, 모듈화(결합도 ↓, 응집도 ↑)가 잘 되는가
• public static void main(String[] args) → 메인 메소드
• 자바에서는 모든 Function이 메소드임.
• 클래스에 포함되어 있음
● 구성요소
- 리턴형 (void) : 기능(명령)을 실행한 결과
- 메소드 이름 (main) : 메소드를 호출하기 위한 이름
- 파라미터 (String[] args) : 기능을 수행하기 위해 필요한 데이터
*위 세 가지 구성요소는 반드시 있어야 한다.
• public : 이 메소드를 공개, 즉 외부에서 접근이 가능하게 함. (접근 제어자)
- public, private, protected, default + 최신 자바에는 하나 더 추가
※ 이 접근 제어자가 필요한 이유 ? 외부에 공개해도 되는 정보가 있고, 공개되면 곤란한 정보가 있는데, 그것들을 설정하는데 필요하다.
- 접근 제어자는 반드시 있어야한다. 아무것도 붙이지 않으면 default로 private로 판단한다. 이렇게 결정되는 옵션은 변경 할 수 있다.
• static : 이 메소드를 “클래스를 만들지 않아도” 접근가능 하도록 함. 이 함수는 전역화 되어 메모리에 올린다.
- class가 메모리에 올라가 있지 않아도 변수들이 메모리에 올라가도록 해주는 요소이다. static로 인해 메모리 영역으로 들어가면 Global Area에 올라간다.
• class : 함수가 들어있는 꾸러미
• public static void main(String[] args) 해석
public : 공개할거고, static : 클래스가 메모리에 올라가 있지 않아도 메모리에 올릴 수 있고 void : 리턴형은 없고, (뭐든 상관없고) main 이름이 메인이고, string[] args : 이런 파라미터로 구성 됐다.
● 메모리 맵을 통한 스코프의 이해
▶ return a+b; a와 b 값을 더해서 add.b / add.a 값을 스택에서 pop 하고 main.b 에 전달한다. 이 main.b에서 스택영역에 저장한다.
코딩을 할 때 결합도는 낮고 응집도는 높여야 한다.
● 스코프
• 변수나 메소드가 호출되거나 I/O가 가능한 영역.
• 메소드, 키워드로 스코프를 구분 할 수 있다.