java

Java 메서드

뚜벅뚜벅뚜벅이 2022. 7. 10. 15:04
반응형

메서드는 함수의 한 종류로서 우리가 클래스의 내부에서 멤버 함수라고 불렀던 녀석이다.

그렇다면 함수가 뭔지부터 일단 살펴보자!

1. 함수

자바에서 함수는 '하나의 기능을 수행하는 일련의 코드'라고 정의하고 있다.

예를 들어 계산기라면 더하기 기능, 나누기 기능, 빼기 기능 등을 수행할 수 있는 것처럼 어떤 기능을 수행할 수 있도록 구현을 해두고 그때그때 필요할 때마다 호출해서 사용할 수 있도록 하는 것이다.

이러한 함수들은 '더하기','빼기'처럼 어떠한 이름을 가지고 입력값과 결괏값을 갖는다.

함수에 이름을 붙일 때는 나뿐만 아니라 다른 사람이 코드를 봤을 때 어떤 기능인지 이해할 수 있도록 직관적이고 이해 가능한 단어를 사용해서 이름을 붙이는 것이 좋다.

2. 함수 정의

함수의 기능을 정하고 코드로 구현하는 것을 우리는 '함수를 정의한다'라고 말한다.

int add(int num1, int num2){
int result;
result = num1+num2; 
return result; 
}

더하기 기능을 수행하는 함수를 구현한 모습

1) 기본 구조

함수는 기본적으로 함수의 반환형, 이름, 그리고 괄호 안에 함수의 입력값인 매개변수를 담는다.

그리고 중괄호 안에 그 함수가 수행해야 할 기능들을 적고 return이라는 예약어를 사용하여 돌려준다.

2) 반환형

위의 함수의 반환형은 int이다.

여기서 반환한다는 것은 함수가 수행된 후의 결과가 어떻게 나오냐는 것이다.

예를 들어, 위의 더하기 기능을 수행하는 함수는 정수를 더할 것이므로

add 함수의 결과는 우리가 int형으로 돌려받을 수 있는 것이다.

이렇게 함수가 수행되고 난 후의 결괏값을 어떠한 자료형으로 받을지 결정하는 것도 중요하다.

3) return 예약어

returnd에는 두 가지 기능이 있다.

①함수의 결괏값을 받는 방법

: return result;라고 하면 result라고 하는 변수의 반환값을 주겠다는 뜻이다.

(위의 함수에서 result에 매개변수를 더하는 값을 대입했다.)

② 함수 수행을 종료하고 프로그램의 도중 호출한 곳으로 돌아가기

: 예를 들어 조건식 if-else를 사용했을 경우 첫 번째 조건을 만족하지 못했다면 다시 함수의 처음으로 돌아가도록

if의 마지막에 return을 써주는 것이다.

4) 반환형이 없는 경우

함수는 기능을 수행하고 나면 결괏값이 나온다. 하지만 반환값이 없는 함수도 있다.

public void greeting(String name){
system.out.println(name+"님 안녕하세요"); 
return; 
}

위의 그리팅 함수는 인사문을 출력하는 함수이다.

이처럼 어떠한 값을 변수에 담아서 return으로 결괏값을 반환할 수도 있고,

호출을 하면 그냥 출력물을 보여주는 함수도 만들 수 있다.

출력 기능은 말 그대로 출력의 기능을 수행하기 때문에 반환하는 값이 따로 없다.

함수를 호출하면 매개변수의 값을 넣어서 출력해 주는 것이다.

그렇다면 바로 sysout을 하면 된다고 생각할 수 있지만, 함수는 우리를 편하게 해준다.

만약 100명에게 인사해야 한다면 sysout을 백번 쳐야 하지만 함수는 그냥 호출해서 변숫값만 바꾸어주면 된다.

기능이 더 복잡해지면 함수 쪽이 훨씬 편리하게 이용할 수 있다.

이때 함수는 반환값이 없다. 따라서 반환값이 없다는 표시로 void라고 써준다.

void는 메인 메서드에도 있다. 메인 메서드는 내부의 함수들을 다 작동하려고 하는 거지 반환되는 값이 따로 있는 것이 아니기 때문이다.

2. 메서드

지금까지 함수의 기본에 대해서 알아보았다.

메서드라는 것은 함수의 한 종류로 클래스의 내부에서 사용하는 함수이다.

계속 클래스 내부라고 하는데 자바에서 클래스를 생성할 때 main()에 체크를 하고 시작하는 경우와

없이 시작하는 경우를 보았을 것이다. 이때 main 함수 없이 순수하게 클래스만 가지고 시작할 때를

클래스 내부에 멤버 변수와 멤버 함수를 썼다고 말할 수 있다.

메서드는 이처럼 멤버 변수들을 이용해서 클래스의 기능을 구현한다.

public class Student { 
int studentID;
String studentName;
int grade; 
String address;

public String getStudentName(){
return studentName;
}

위의 클래스는 멤버 변수와 메서드를 가지고 있다.

위의 메서드의 기능은 호출하면 학생 이름을 반환해 주는 것이다.

함수의 반환값은 학생 이름이 문자열이니 String으로 한다.

하나만 더 보자면

분명 함수는 자료의 반환형으로 시작한다고 했는데 위의 함수는 public으로 시작한다.

이는 접근제 여자로 다른 클래스 또는 패키지에서 이 함수를 호출할 수 있다는 의미이다.

접근제어 자도 여러 종류가 있지만 나중에 공부하자 헷갈림 ㅎㅎ

※ 두 가지 메서드 비교하기

public String getStudentName(){
return studentName; 
} 

public void setStudentName(String name){
studentName = name; 
}

위에 있는 두 메서드의 차이는 뭘까?

이름은 당연히 다르다ㅎㅎ

①첫 번째의 getStudentName 함수

:이 함수의 기능은 호출하면 학생의 이름을 반환하는 것이다.

②두 번째의 setStudentName 함수

:이 함수의 기능은 학생의 이름을 매개변수 name으로 받아서 학생의 이름을 새로 지정하거나 바꾸는 기능이다.

이 함수는 수정할 학생의 이름을 받아야 하므로 매개변수가 필요하고 받은 name을 StudentName에 저장한다.

정보를 수정하는 기능이기 때문에 눈에 보이는 결과를 돌려주는 것은 아니기 때문에 반환값은 없다.

따라서 반환형은 void이다.

반응형