메소드 : 객체의 동작에 해당하는 중괄호{} 블록

메소드 선언은 선언부(method signature)와 실행블록으로 구성된다. 

선언부와 실행블록은 다음 요소를 포함한다.

 

https://livebook.manning.com/concept/java/method-signature

 

  • 리턴타입 : 메소드가 리턴하는 결과의 타입을 표시
  • 메소드 이름: 메소드의 기능이 드러나도록 식별자 규칙에 맞게 이름을 지어준다.
  • 매개 변수 선언 : 메소드를 실행할 때 필요한 데이터를 받기 위한 변수를 선언한다.
  • 메소드 실행 블록 : 실행할 코드를 작성

 

메소드 선언

메소드 선언은 선언부(리턴 타입, 메소드 이름, 매개 변수 선언)와 실행 블록으로 구성된다.

 

① 리턴 타입

  • 리턴값의 타입을 의미한다. 리턴값이란 메소드를 실행한 후의 결과값을 의미한다.
  • 메소드는 리턴값이 있을 수도 있고 없을 수도 있으나, 리턴값이 있을 경우 리턴 타입이 선언부에 명시되어야 한다.
  • 리턴값이 없는 경우 - void powerOn(){...}
  • 리턴값이 있는 경우 - double divide(int x, int y){...}

 

② 메소드 이름

  • 숫자로 시작하면 안되고, $와 _를 제외한 특수 문자를 사용하지 말아야 한다.
  • 관례적으로 소문자로 작성하고, 혼합된 이름이라면 뒤이어 오는 단어의 첫 글자는 대문자로 작성한다.

 

③ 매개 변수 선언

  • 메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용된다.
  • 메소드에서 매개 변수가 필요한 경우가 있고 필요 없는 경우가 있다.
  • 예를 들면 , powerOn() 메소드는 매개 변수가 필요 없고, divide()메소드는 나눠줘야 할 숫자타입의 변수가 필요하다.

 

④ 매개 변수의 개수를 모를 경우

  • 매개 변수를 배열 타입으로 선언하는 방법이 있다.
  • 예를 들어, 여러 개의 수를 모두 합산하는 메소드를 선언해야 하는 경우가 있는데,
  • 아래의 예제를 통해 매개 변수를 배열로 선언하는 방법을 확인해 보자.

 

  • int sum1(int[] values){...}
  • int sum2(int...values){...}

 

리턴(Return)문

① 리턴값이 있는 메소드 

② 리턴값이 없는 메소드 : void

  • 이 경우 return문은 리턴값을 지정하는 것이 아니라 메소드 실행을 강제 종료 시키는 역할을 한다.

 

메소드 호출

① 객체 내부에서 호출

   이때 변수 타입은 메소드 리턴 타입과 동일하거나, 자동 타입 변환이 될 수 있어야 한다.

 

② 객체 외부에서 호출

  • 외부 클래스에서 메소드를 호출하려면 다음과 같이 클래스로부터 객체를 생성해야 한다.
  • 메소드는 객체에 소속된 멤버이므로 객체가 존재하지 않으면 메소드도 존재하지 않기 때문

클래스 참조변수 = new 클래스(매개값,...);

 

  • 객체가 생성되었다면 아래와 같이 메소드를 호출할 수 있다.

참조변수.메소드(매개값...);

타입 변수 = 참조변수.메소드(매개값,...);

 

 

메소드 오버로딩

  • 클래스 내에 같은 이름의 메소드를 여러개 선언하는 것을 메소드 오버로딩(overloading)이라고 한다.
  • 오버로딩된 메소드를 호출할 겨우 JVM은 매개값의 타이블 보고 메소드를 선택한다.
  • 주의점은 매개 변수의 타입과 개수, 순서가 똑같을 경우 매개 변수 이름이 다르다고 해서 이것을 메소드 오버로딩이라고 하지 않는다는 것.
  • 또한 리턴 타입만 다르고 매개 변수가 동일하다면 이것도 오버로딩이 아니다.
  • 오버로딩의 대표적인 예 - System.out.println() 메소드. - 매개값의 타입에 따라 오버로딩된 println() 메소드 중 하나를 호출한다.

  • 위와 같이 오버로딩된 메소드의 경우, 매개값의 개수에 따라 어떤 메소드가 호출될 것인지 결정된다.

 

 

'Coding > Java' 카테고리의 다른 글

[18] JAVA 인스턴스(객체) Instance  (0) 2022.11.27
[17] JAVA 자료구조 ArrayList  (0) 2022.11.25
[15] JAVA 생성자 (Constructor)  (0) 2022.11.24
[14] JAVA Math 클래스 메소드  (0) 2022.11.23
[13] JAVA String 클래스 메소드 정리  (0) 2022.11.23

+ Recent posts