2 분 소요

2022. 12. 28. 수업내용 정리

메서드


  • 메서드(Method)는 클래스(Class)가 포함하는 멤버(Member) 중 하나로, 호출(Call) 가능한 단위이다.
  • 메서드 명명은 카멜 케이스를 이용하고, 주로 동사혹은 동사 + 목적어의 형태를 가진다. 가령, addUser, deleteUser와 같은 꼴. 단, to타입과 같은 형식(가령 toStringtoArray 등)을 가지기도 하고, 반환 타입이 논리형(boolean)인 경우 3인칭 단수형의 동사를 이름(가령 equalsmatches 등)으로 가지기도 한다.
  • 메서드의 명명에는 예외가 있을 수 있으나 카멜 케이스를 지키는 것에는 예외가 없다.

    [접근 제한자] [static|abstract|final]? [반환 타입|void] [메서드 이름] ([매개 변수(Parameter),...]?) [throws [예외,...]?] {
    // ? 둘 중 하나가 오거나 안와도 된다는 의미.. 
      //  구현부
    }
    
    • static: 메서드의 정적 여부.
    • abstratic : 메서드의 추상 여부.
    • final : 메서드의 최종 여부.
    • void : 메서드의 반환 타입이 없음을 의미함.
    • throws : 해당 메서드 호출 시 발생할 수 있는 예외(Exception) 한 개 이상을 명시한다. 해당 메서드를 호출하는 컨텍스트(Context)는 해당 예외에 대한 처리가 되어있어야 한다.
    • 메서드는 정적이면서 추상적이거나 최종일 수 없고, 추상적이면서 정적이거나 최종적일 수 없으며 최종적이면서 정적이거나 추상적 일 수 없다.(static, abstract, final 중 하나 만 쓰라는 뜻)
    • 추상 메서드
      • abstract 키워드를 이용하여 추상적인 메서드를 선언할 수 있다.
      • 메서드가 추상적일 경우 구현부({,})를 가지지 않아야 하며 세미콜론(;)으로 끝내야 한다.
      • 추상 메서드를 한 개 이상 포함하고 있는 클래스는 반드시 추상적이어야 한다.
        public static void someAbstractMethod(); // 추상 메서드의 예
        
    • 접근 제한자는 public이다.
    • 정적이고(static) 추상적(abstratic) 이지 않다.
    • 반환 타입이 없다(void).
    • 메서드의 이름은 main 이다.
    • 매개 변수는 String[] 타입의 args 한 개가 있다.



반환

  • return 키워드는 어떠한 메서드의 반환 타입이 있을 때(void가 아닐 때) 해당 메서드의 호출 결과를 반환(Return)해주기 위해 사용하는 키워드이다. return 반환값; 형식으로 사용한다.
  • 메서드의 반환 타입이 있는 경우(void가 아닐 때) 모든 경우의 수에서 반환 값을 반환하는 구문이 작성되어야만 한다.
  • 메서드의 반환 타입이 없을 때(void일 때)에도 사용할 수 있는데 단순히 return;로 사용할 수 있다.
  • 반환 값의 유무와 관계 없이 return은 해당 메서드의 실행을 즉시 중단시킨다.



호출

  • 메서드를 호출(Call)하기 위해서는 해당 메서드를 멤버로 가지고 있는 클래스(혹은 객체)에 접근하여 메서드 이름을 적고 괄호 안에 요구되는 매개 변수의 구조와 일치하는 전달 인자를 전달해야 한다.



재귀호출(Recursive Call)

  • 재귀호출이란, 어떠한 메서드 x의 구현부 내에 동일한 메서드 x를 호출하는 것을 의미한다.



오버로딩(Overloading)

  • 메서드 오버로딩(Method Overloading)은 동일한 이름을 가지는 메서드 두 개 이상에 대해 매개변수 구조를 다르게하여 메서드를 정의하는 것이다.



가변인자(Variable Arguments)

  • 어떠한 타입 T에 대해서 정해지지 않은 개수의 인자를 전달 받기 위해 사용한다. 단, 0개의 인자도 허용함으로 유의한다.
  • 메서드 매개변수 구조 선언시 가변인자는 마지막에 한 개만 존재해야 한다.
  • 가변인자 T...는 실질적으로 T에 대한 배열(T[])로 인식됨으로 사용에 유의한다.
    public static int sum(int... nums) {...}
    

    위 코드에서 가변인자 nums는 사실 정수형 배열(int[])이다.



재정의(Override)

  • 메서드 재정의(Override)는 상속 받고 있는 부모(몇 단계 부모인가는 상관 없음)가 가진 최종적이지 않은 메서드의 구현부를 새로 작성하는 것이다.
  • 자식 타입에서 재정의된 메서드의 구현부는 부모 타입인 자식 객체를 가지는 변수를 통해 호출하더라도 재정의된 내용이 실행된다.
  • 재정의 되기 전의 (원래) 메서드에 접근하는 방법은 재정의 메서드 구현부 내에서 super 키워드를 이용하는 방법 밖에 없다.
  • 메서드 재정의 시 @Override 어노테이션(Annotation)을 사용해야 한다.




태그:

카테고리:

업데이트:

댓글남기기