메서드

mingseok·2022년 5월 14일
0

객체 지향 1

목록 보기
9/10
post-custom-banner

만약

메인 메서드에 Sort(); 메서드가 있는데 Sort(); 메서드가 괄호안에 아무것도 없다면
메서드로 넘어가는 값 없이 호출 당한 해당 메서드안에 작성된 로직만 실행 되는것이다.

무슨말이냐면, Sort(); 했다고 해서 () 괄호안에 전체값이 들어가는게 아니라
아무값도 들어가지 않고 그냥 해당 메서드를 실행시키는 것이다.

(해당 메서드안에 있는 로직으로만 작동 하는 것이다.)**


예시

c.play(); => void play() { }
play(currentPos); => void play(int currentPos) { }

그리고

메서드로 들어갔는데 또 다른 메서드가 있다면 또 다시 타고 들어가는 것이다.
그렇게 마지막까지 들어가서 코드들을 모두 수행 한후에 다시 호출했던 메서드로 돌아와
밑으로 내려가 나머지 코드를 실행시키는 것이다.


그리고 메서드 안에 void 가 아니고 int형 String형등 같은거면 return 문이 있다.

즉, 값을 가지고 돌아간다는 말이다.
return문만 타입이 있는 이유는 return 할때 타입을 정해줘야 하기 때문이다.
그래서 둘이 세트인것이다.

그리고 void 같은 경우는.

해당 메서드를 호출하여 그 메서드에 있는 것들을 그냥 실행, 동작 시키고
아무 return값 없이 그냥 돌아올때 void를 사용하는 것이다.

즉, 반환값이 없는 경우 반환타입을 void로 적는 것이다.

그리고 Sort(); 만 있는 메서드는 이렇게 void Sort() { System.out.println("hi"); } 매개변수 자리가
아무것도 없는곳을 찾아가 실행 하는것이고, 만약 메인메서드에서 Sort(1); 인 메서드 실행이 있다면
void Sort(int num) { System.out.println("hi"); } 있는 곳으로 들어가는 것이다.

혹시라도 맞지 않는곳이 있다면 실행 되지 않는다.


메서드를 사용하는 이유

  1. 높은 재사용성.
  2. 중복된 코드의 제거

메서드의 선언과 구현

메서드는 크게 두 부분, ‘선언부’(머리)와 ‘구현부(몸통)’로 이루어져 있다.

메서드를 정의한다는 것은 선언부와 구현부를 작성하는 것을 뜻한다.

반환타입  메서드이름  (타입 변수명, 타입 변수명 ... ) { // - 선언부
		
	// 메서드 호출시 수행될 코드 - 구현부
}

---------------------------------------------------------

int add (int a, int b ... ) { // - 선언부

     int result = a + b; // - 구현부
		 return result; // 호출한 메서드로 결과를 반환한다. - 구현부
}

반환타입

메서드의 작업수행 결과(출력)인 ‘반환값’의 타입을 적는다.
반환값이 없는 경우 반환타입으로 ‘void’ 를 적어야 한다.


return문

메서드의 반환타입이 ‘void’ 가 아닌 경우, 구현부 { } 안에 ‘ return 반환값; ’ 이
반드시 포함 되어 있어야 한다.


지역변수

메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있으므로 서로 다른 메서드라면
같은 이름의 변수를 선언해도 된다. 이처럼 메서드 내에 선언된 변수를 ‘지역변수’ 라고 한다.

int add(int x, int y) {
        int result = x + y;
        return result;
    }

    int multiply(int x, int y) {
        int result = x * y;
        return result;
    }

메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있으므로 서로 다른 메서드라면 같은 이름의 변수를 선언해도 된다. 이처럼 메서드 내에 선언된 변수를 ‘지역변수’ 라고 한다.


선언된 변수 x, y, result 는 이름만 같을 뿐 서로 다른 변수이다.


Reference
남궁 성 지음, 『자바의 정석』, 도우출판.

profile
블로그 이사 했습니다.
post-custom-banner

0개의 댓글