메서드
- 자바에서 클래스내 정의된 함수를 메서드라고한다.
함수란?
- 프로그래밍에서는 일정한 동작을 수행하는 코드이다.
예시
- sum(a, b) = a+b
수행
- sum(1, 2) = 1 + 2 = 3
- sum(3, 4) = 3 + 4 = 7
매서드 정의방법
선언부
- public static int add(int a, int b)
- 반환 타입, 이름, 매개변수(파라마터)를 포함한다.
- 이름으로 호출해 사용가능하다.
선언부 상세
1) 접근제어
- 다른 클레스에서 호출할수 있는 범위를 정한다.
종류 | 접근 |
public | 같은 패키지 모든 클래스, 다른 패키지도 모든 클래스 가능 |
protected | 같은 패키지내 모든 클래스, 다른 패키지 내 자식 클래스 가능 |
default(생략한 경우) | 같은 패키지내 모든 클래스만 가능 |
private | 선언된 클래스에서만 사용가능 |
2) static
- 해당 키워드는 프로그램 실행시 메모리에 공간을 할당받아 프로그램 종료시까지 사용한다는 뜻이다.
- 실행시 이미 메모리에 할당받아 있으므로 객체 생성 없이 메서드 사용이 가능하다.
- 주로 유틸리티 관련 함수에서 사용한다. (Math.max(a, b))
3) 리턴(반환)타입
- void : 반환이 필요없을 경우
- 자료형 : 해당 자료형으로 return 함
4) 메소드 이름
- 메소드의 이름으로 호출할 때 사용한다.
5) 매개변수
- 메서드를 정의할 때 선언한 변수를 매개변수 라고 한다. (영어로 파라미터)
- 메서드 내에 값을 받아 사용이 필요하면 작성하고 필요 없으면 비어두어도 된다.
{}
메서드 본문으로 수행할 코드이다.
main메서드 확인해보기
- java 는 어플리케이션이 실행되면 제일 먼저 main메소드를 실행한다.
public
- main메서드가 어디에 있건 jvm에서 접근 가능해야 하기 때문에 public을 쓴다.
static
- main 메서드는 프로그램 실행시 제일 먼저 실행되는 메서드로 먼저 메모리에 올려져있어야 한다.
void
- main메서드는 프로그램의 시작과 끝으로 종료시 프로그램이 종료를 뜻하여 반환 값이 없다.
String[] args
- 매개변수로 main메서드를 실행할 때 전달해야하는 값이 있다면 함께 전달가능하다.
호출과 복사
- 매소드는 호출시에 받는 파라미터를 복사해서 사용한다.
- 호출시 변수를 넣어 사용해도 해당변수를 수정하지 않는다.
예시
- divide 함수에 변수 a를 넣어서 사용 -> divide에서 a를 나누기 해도 main의 a는 변하지 않음
- 해당 값을 사용하려면 divide의 리턴값을 int로 하여 결과값을 전달해야한다.
형변환
- 매개변수로 변수를 보내는데 자료형이 다를 때 매개변수의 표현 값이 크면 호출가능하다.
- int < long < float < double
참고
메서드 오버로딩
- 한클래스 내에 같은 이름의 메소드를 매개변수의 타입이나 순서를 다르게 해서 여러개 생성하는 것
- 매개변수 타입 or 순서는 무조건 달라야 하고 반환타입은 자유롭게 설정 가능하다.
- 예시
//순서가 다를경우
public void methodTypeA(int a, String b){}
public void methodTypeA(String a, int b){}
//매개변수 타입이 다를경우
public void methodTypeB(int a, int b){}
public void methodTypeB(int a, String b){}
//매개변수 갯수가 다를경우
public void methodTypeC(int a, int b){}
public void methodTypeC(int a, int b, int c){}
- 타입 or 순서가 같으면 반환 타입이 달라도 아래와 같이 에러가 발생한다.
메서드 시그니처
- 매서드 이름 + 매개변수 타입(순서)
- 자바에서 메서드를 구분할 수 있는 고유한 식별자나 서명
메서드 이름
- 변수이름은 일반적으로 명사를 사용한다. (saleSum, rateValue)
- 매서드는 특정 동작을 수행하는 코드로 동사로 이름을 짓는다. (println, add)
장점
1) 코드 재사용성
- 특정 기능을 캡슐화 하여 필요할때 마다 작성할 필요없이 호출함으로써 재사용 가능하다
2) 코드 가독성
- 메서드 명은 수행하는 작업을 나타내어 코드를 읽는사람에게 가독성이 좋다.
- 복잡한 소스를 확인할때 최대한 메소드로 나누어 메소드 명만 보이는것이 가독성이 좋다.
3) 모듈성
- 규모가 큰 프로그램을 각 모듈별로 나누어 메소드로 작성하면 가독성이 좋고, 디버깅하기 쉽다.
4) 코드 유지관리
- 코드의 특정 부분을 수정한다면 해당 모듈인 메소드만 수정하여 전체 코드를 수정하지 않아도 된다.
5) 재사용성, 확장성
- 설계된 메서드를 다른 프로그램이나 프로그램에서 재사용 가능하고 새로운 기능을 추가하기 용의하다.
6) 추상화
- 메서드를 사용하는 곳에는 메소드 코드내용을 알 필요없이 사용가능하다.
7) 테스트, 디버깅 용이
- 각각의 메서드는 독립적으로 테스트 가능하고 디버그 가능하다.
참고
김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
'자바' 카테고리의 다른 글
[java]Class, Object, Instance (1) | 2024.09.25 |
---|---|
객체 지향과 절차지향 언어 비교 (0) | 2024.09.25 |
6. Java 스코프 (1) | 2024.09.23 |
5. 반복문 (while, do-while, for) (0) | 2024.09.20 |
4. 조건문 (if, switch, ? :) (0) | 2024.09.20 |