메서드

김근호·2023년 5월 13일
0

Java

목록 보기
8/10

메서드란?

자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메서드(method)를 가집니다.
그중에서 메서드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다.

함수와 메서드의 차이?
함수는 여러 문장들이 하나의 기능을 구현하도록 구성한 것이라고 할 수 있다. 그 함수 중에서 클래스 내부에 정의한 함수를 메서드라고 부르는 것이다. 또한 메서드는 객체의 속성을 다루기 위한 행위를 정의한 것이라는 의미도 포함하고 있다.

즉, 독립적으로 존재하는 함수이냐, 클래스 내부에 종속되어 있느냐의 구분으로 함수와 메서드를 구분할 수 있다.

메서드 사용 목적

  1. 중복되는 코드의 반복적인 프로그래밍을 피할 수 있습니다
  2. 모듈화로 인해 코드의 가독성도 좋아집니다.
  3. 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때도 손쉽게 유지보수를 할 수 있게 됩니다.

메서드를 작성할 때는 되도록 하나의 메서드가 하나의 기능만을 수행하도록 작성하는 것이 좋습니다.

메서드 정의

메서드는 크게 두 부분, '선언부(header, 머리)'와 '구현부(body, 몸통)'로 이루어져 있습니다.
메서드를 정의한다는 것은 선언부와 구현부를 작성하는 것을 뜻합니다.

메서드의 선언부

메서드가 작업을 수행하기 위해 어떤 값들을 필요로 하고 작업의 결과로 어떤 타입의 값을 반환하는지에 대한 정보를 제공합니다.
구성요소로는 '반환타입(출력)', '메서드의 이름', '매개변수 선언(입력)'입니다.

메서드 시그니처(method signature)란?
메서드의 선언부에 명시되는 매개변수의 리스트를 가리킵니다. 만약 두 메소드가 매개변수의 개수와 타입, 그 순서까지 모두 같다면, 이 두 메소드의 시그니처는 같다고 할 수 있습니다.

메서드의 구현부

메서드의 선언부 다음에 오는 괄호 {}를 '메서드의 구현부'라고 하는데, 여기에 매서드를 호출 했을 때 수행될 문장들을 넣는다.

지역변수

메서드 내에 선언된 변수를 지역변수라고 한다.

return문

메서드의 반환타입이 void가 아닌 경우, 구현부{}안에 'return 반환값;'이 반드시 포함되어 있어야 한다.
이 문장은 작업을 수행한 결과인 반환값을 호출한 메서드로 전달하는데, 이 값의 타입은 반환타입과 일치하거나 적어도 자동 형변환이 가능한 것이어야 한다.

🤔생각해보기

왜 반환타입 void 일때는 return문을 안 써도 되는걸까?

원래는 반환값의 유무에 관계없이 모든 메서드에는 적어도 하나의 return문이 있어야 한다.
그런데도 반환타입이 void인 경우, return문 없이도 아무런 문제가 없었던 이유는 컴파일러가 마지막에 'return;'을 자동적으로 추가해주었기 때문이다.

여러 개의 변수를 선언할 수 있는 매개변수와 달리 return문은 단 하나의 값만 반환 할 수 있다.

메서드의 호출

메서드를 정의했어도 호출되지 않으면 아무 일도 일어나지 않습니다. 메서드를 호출해야만 구현부 {}의 문장들이 수행 됩니다.

호출 방법

  • 참조하지 않는 경우
    => 메서드이름(인자1, 인자2, ....)
  • 참조하는 경우
    => 객체참조변수이름.메서드이름(인자1, 인자2, ....);

인자

메서드를 호출할 때 괄호()안에 저장해준 값들을 '인수' 또는 '인자'라고 하며, 인자의 개수와 순서와 타입은 호출된 메서드에 선언된 매개변수와 일치해야 한다

매개변수와 인자의 차이

매개변수

  1. 매개변수는 함수나 메서드의 정의 부분에서 사용되며, 이를 통해 해당 함수나 메서드가 호출될 때 값을 받아들입니다.
  2. 매개변수는 함수 또는 메서드의 시그니처(정의)에 나열되어 있습니다.
  3. 함수나 메서드 내부에서 매개변수는 변수처럼 사용됩니다.

인자

  1. 인자는 함수나 메서드를 호출할 때 전달되는 실제 값입니다.
  2. 인자는 함수나 메서드 호출 시 괄호 안에 나열됩니다.
  3. 함수나 메서드가 호출되면, 인자 값은 매개변수에 할당되어 해당 함수나 메서드 내에서 사용됩니다.

즉, 매개변수는 함수나 메서드 정의에서 값을 받아들이기 위한 "틀" 역할을 하며, 인자는 함수나 메서드 호출 시 실제로 전달되는 값입니다.

profile
앞만 보고 나아가자!

0개의 댓글