[Java/객체지향] 메서드

2024. 8. 17. 20:06프로그래밍 언어/Java

메서드

1. 문장들을 묶어놓은 것 = 문장들을 작업단위로 묶어서 이름 붙인 것 → [장점] 코드 중복 제거 /관리 용이/재사용 가능

public static void main(String args[]){

...중간 생략...
for(int i = 0;i<10;i++)
	numArr[i] = (int)(Math.random()*10); //배열 초기화

for(int i = 0;i<10;i++)
	System.out.printf("%d",numArr[i]); //배열 출력(1)
	System.out.println();
			...중간 생략...             //코드 중복(1),(2)

for(int i = 0;i<10;i++)
	System.out.printf("%d",numArr[i]); //배열 출력(2)
	System.out.println();
//메서드
//메서드 이름 : printArr(){}
static void printArr(int[] numArr){
	for(int i=0;i<10;i++)
		System.out.printf("%d", numArr[i]);
		System.out.println();
}

public static void main(String args[]){
	for(int i = 0;i<10;i++)
		numArr[i] = (int)(Math.random()*10);

printArr(numArr);//배열 출력
printArr(numArr);//배열 출력 -> 코드 중복 삭제

 

 

2. 어떤 값을 입력하면, 이 값으로 작업을 수행해서 결과를 반환

 cf) 메서드 vs 함수
메서드와 함수는 거의 같은 개념 → 메서드는 객체지향에서 함수를 지칭하는 단어
[차이] 메서드: 반드시 클래스 안에 존재 vs 함수: 클래스에 독립적 

 

  • 메서드의 작성
    • 반복적으로 수행되는 여러 문장을 메서드로 작성
    • 하나의 메서드는 한 가지 기능만 수행하도록 작성→ 유지 및 보수 유리/간결 가독성
    • (ex) 배열초기화와 배열 출력을 한 가지 메서드에 넣는 것이 아니라, 각각 작성)

메서드의 선언부/구현부

:반환타입  :메서드이름     :(매개변수)
int        add           (int x, int y) {

int result = x+y;
return result;

}
  • 반환타입: 작업결과 타입 [출력] → 0 or 1개 → if) 여러 개일 경우 배열로 출력
  • 매개변수: (작업에 필요한 값들)매개변수 목록 [입력] → 0~n개

지역변수(lv)

int add(int x, int y) { //지역변수1:x ,지역변수2:y
	int result = x + y; //지역변수3:result
	return result;
}

int multiply(int x, int y) {
	int result = x * y;
	return result;
}
매개변수(int x, int y)도 메서드 내에서 선언된 것으로 간주 = 지역변수
유효범위는 메서드 시작~종료
메서드 add와 multiply에 선언된 int x, int y는 이름이 같지만, 다른 변수

메서드 호출

print99danAll(); //구구단 전체 출력일라 입력값 필요X -> 그러므로 작업 결과를 저장할 변수를 따로 쓰지X
int result = add(3, 5);
  • add(3, 5): 메서드 호출
  • int result: 작업 결과를 저장할 변수 -> 없어도 되지만, 없으면 결과 저장 불가
메서드는 클래스 영역에서만 정의 가능

return문

  • 반환타입이 void 아닌 경우, 반드시 return문 필요
    • ex) if문의 결과에 따라 return문이 실행되지 않을 수 있기 때문에 → else 사용 항상 결과값이 반환되도록 해야함
class add{
	public static void main(String[] args){
		MyMath mm = new MyMath();
		long result1 = mm.add(5L, 3L);
}

class MyMath{
	long add(long a, long b) {
		long result = a + b;
		return ***result***;
 }
반환값은 1)반환타입 2)작업결과를 저장할 변수 와 일치하거나 적어도 자동 형변환이 가능해야함