국비과정 공부내용/Java (11월24일~12월10일)

#6. Method

CEJ_0929 2021. 12. 12. 16:13

1. Method 란?

 : #5 Class 에서 결과로 "20살 김영수가 밥을 먹습니다." 라는 출력 결과를 얻었다.

 여기에서 '20살' , '김영수' 는 Person의 멤버변수(속성) 이고

 '밥을 먹습니다.' 는 Person의 기능(method)이다.

 

 : 속성과 기능을 합쳐서 '필드' 라고 한다.

 : method 는 기능, 일하는 놈, 동사 라고 개념을 잡으면 편하다.

 


2. Method를 선언하기 전 !

  1) 메서드 명을 선택한다. 

      : 메서드의 첫글자는 소문자이며 카멜표기법을 따른다.

      : 되도록 '동사'로 설정한다.

      : 해당 메서드의 기능을 잘 표현할 수 있어야 한다.


  2) 매개변수를 생각한다.

      : 매개변수로는 보통 우리가 변수에 사용하는 자료형 외에도

        Random 이나 Scanner 와 같은 객체도 받을 수 있다.


  3) 실행 할 문장과 리턴값을 생각한다.

       : 무조건 리턴타입이 있는게 좋지는 않다.

        오히려 리턴타입에 귀속되어 메서드가 자유롭지 못할 수 있음.


 

3. Method의 선언 형태 3가지

 : 변수도 선언을 해야 사용할 수 있다.

 : Class도 그렇고 Method도 그렇고 JAVA에서 구현하는 모든 것은 '선언'을 해야하는 것이다.

 

 

   1) 리턴타입O, 매개변수O

 

   리턴타입 + 메서드명 (매개변수 지정) {  실행 내용 및   return 리턴값;    }

 

ex)  int add(int a, int b){

         int result = a+b;

         return   result;

}

==> 정수형 변수 a,b를 매개변수로 받고

       정수형 변수 result에 a+b한 값을 담아서 호출한 쪽으로 정수 result를 되돌려준다.

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

 

  2) 리턴타입O, 매개변수X

 

   리턴타입 + 메서드명 ( ) {  실행 내용 및   return 리턴값;    }

 

ex)  String msg() {

    Scanner sc = new Scanner(System.in); 

String msg =  sc.nextLine(); 

return masg;  

}

==> 매개 변수는 없고 String 타입의 msg에 문자열을 입력받아 리턴하는 메서드. 

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

  3) 리턴타입X, 매개변수O

 

  void + 메서드명 (매개변수 지정) {  실행 내용    }

 

ex)  void add(int a, int b){

       System.out.println(a+b);

}

 

==> 정수형 변수 a,b를 매개변수로 받고  a+b한 값을 바로 출력해준다.

(리턴타입 자리에 void를 쓰는 것은 리턴 타입이 없다는 뜻이다.)

 

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

 

  3) 리턴타입X, 매개변수X 

   

  void + 메서드명 (

) {  실행 내용    }

 

ex)  void add(  ){

       System.out.println("덧셈 메서드라고 출력만 되는 메서드 입니다.");

}

 

==> 실제로 덧셈은 되지 않을 메서드가 된다;;ㅎ


4. Method 선언시 주의 사항

1) 매개변수가 없는 메서드는 외부에서 (main method등 호출한 쪽)

    값을 전달 받을 수 없다.

2) 리턴값이 있는 메서드는 사용시 전체를 리턴'값'으로 보자.

    (코드 이해시 정말 중요한 내용이다 ★★★★★)

3) 메서드 내부에 다른 메서드를 선언할 수 없다.
    단, 사용은 가능하다.

4) 메서드 선언시 매개변수는 저장 공간이고,
사용시에는 값을 그 자리 순서에 맞게 넣어준다.

5) 재사용의 목적이 있기 때문에, 특정성을 부여하면 안된다.
   (Person에 선언된 eat() method 인데 대뜸 "번데기탕과 소주를 마신다." 와 같은 결과를 리턴하면?

       필자는 번데기탕을 못먹는다. 그렇다면 필자는 Person이 아닌가?

     모든 Person, 모든 Car , 모든 Animal이 구현할 수 있는 공공적인 내용으로 한다.)

 


5 그렇다면 Method 를 사용하는 이유는?

1) 반복되는 기능들을 쉽게 관리하기 위해서.

2) 코드를 줄여 가독성을 높이기 위해서.

 

console 기반의 mini 프로젝트를 하다보면 (학생관리, 사원관리, 펫관리 등등)

분명 반복되는 기능들이 있다.

이 기능들을 효과적으로 메서드화 하고 옮겨다니며 썼을 때

코드의 가독성도 올라가고

코딩을 하는 개발자의 편의 역시 증진된다.